SA0161: Paketlenmiş yapıda paketlenmemiş yapıPermalink

Paketlenmiş yapılarda kullanılan paketlenmemiş yapıları tespit eder

Gerekçe: Derleyici tipik olarak paketlenmemiş bir yapıyı, yapı içindeki tüm elemanlara hizalanmış erişime izin veren bir adrese ayarlar. Bu yapıyı paketlenmiş bir yapıda oluşturursanız, hizalanmış erişim artık mümkün değildir. Ayrıca, paketlenmemiş yapıdaki bir öğeye erişim bir yanlış hizalama istisnasına yol açabilir.

Önemliymiş: Yüksek

Örnek

‎structSingleDataRecord‎ yapısı paketlenmiştir, ancak paketlenmemiş ‎struct4Byte‎ ve ‎struct9Byte‎ yapılarını içerir.

{attribute 'pack_mode' := '1'}
TYPE structSingleDataRecord :
STRUCT
	str9ByteData: struct9Byte;	(* 9 BYTE *)
	str4ByteData: struct4Byte;	(* 4 BYTE *)
	udi1: UDINT;
	udi2: UDINT;
	udi3: UDINT;
	usi4: USINT;
END_STRUCT
END_TYPE (* 9 BYTE *)
TYPE struct9Byte :
STRUCT
	usiRotorSlots: USINT;		(* 1 BYTE *)
	uiMaxCurrent: UINT;			(* 2 BYTE  *)
	usiVelocity: USINT;			(* 1 BYTE  *)
	uiAcceleration: UINT;		(* 2 BYTE  *)
	uiDeceleration: UINT;		(* 2 BYTE *)
	usiDirectionChange: USINT;	(* 1 BYTE *)
END_STRUCT
END_TYPE TYPE struct4Byte :
STRUCT
	//udiDummy : UDINT;
	rRealDummy : REAL;
END_STRUCT
END_TYPE

--> SA0161: Declaration of an unpacked struct 'struct9ByteData' inside a packed struct 'structSingleDataRecord'
--> SA0161: Declaration of an unpacked struct 'struct4ByteData' inside a packed struct 'structSingleDataRecord'