Gilt die Richtlinie __attribute__
für alle in einer Zeile deklarierten Mitglieder?Gilt __attribute__ für alle Variablen in einer Deklaration?
int a, b, c;
Deklariert drei int-Variablen.
int *a, b, c;
Erklärt Variable "a" als ein Zeiger auf int und b und c als Int.
int __attribute__((used)) a, b, c;
Ist die used
auf alle Variablen gelten Attribut oder nur a
?
Sie könnten das wahrscheinlich testen. Attribute sind nicht Teil des C-Standards, daher kann jeder Compiler tun, was er will. Erstellen Sie einfach ein einfaches Programm wie Sie es haben, verknüpfen Sie es und machen Sie einen Dump der Symbole. –
Aus demselben Grund ist die Pointer-Deklaration vage (d. H. 'Int * a, b;' deklariert b nicht als Zeiger), es wird im Allgemeinen empfohlen, NIE mehr als eine Variable pro Zeile zu deklarieren. Dann gibt es keine Zweideutigkeit. Gleiches gilt für '__attributes__' –
Nun, die Frage ist, ob das' __attribute__' den Typ (linke Seite) oder die Variable (rechte Seite) beeinflusst. Da 'used' ist ein variables Attribut [https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#Common-Variable-Attributes] und kein Typattribut [https: //gcc.gnu. org/onlinedocs/gcc/Common-Type-Attribute.html # Common-Type-Attribute] sollte nur die Variable 'a' betreffen. – harper