Ceci est une ancienne révision du document !
Table des matières
Pointeur
Pointeur invalide : adresse “poison” 0xDEADBEEF
.
Données
Explication du padding / align : The Lost Art of Structure Packing Archive v2.2 du 19/12/2019 le 06/03/2020
Attribute
__attribute__((weak))
Définir une variable (globale) ou une fonction avec un attribut weak
indique au lieur un lien faible. Si le même symbole (sans weak
) est trouvé par le lieur, c'est celui-là qui le remplacera.
Il est aussi possible de définir un prototype ou la déclaration d'une variable extern
en weak
. Dans ce cas, si le symbole n'est pas défini (avec ou sans l'attribut weak
), le lieur ne posera pas de problème (pas de undefined reference to
) et considérera que le symbole est à l'adresse null
(attention aux pointeurs null).
extern const unsigned char __attribute__((weak)) variable; // Numéro de l'automate const unsigned char __attribute__((weak)) variable = 1; const unsigned char variable = 2;
Passage par référence d'un tableau dans une fonction
int & tab[10]
n'est pas la bonne syntaxe à cause de la priorité des opérateurs. La bonne syntaxe est :
int (& tab)[10]
Manipulation des bits
Lever un bit :
nbyte |= (1 << 4);
Descendre un bit :
nbyte &= ~(1 << 4);