Outils pour utilisateurs

Outils du site


lang:c:syntaxe:attribute

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
lang:c:syntaxe:attribute [2017/07/02 23:11] – [__attribute__((weak))] : ajout d'un exemple rootlang:c:syntaxe:attribute [2019/08/18 07:23] (Version actuelle) – supprimée root
Ligne 1: Ligne 1:
-====__attribute__((const)) vs __attribute__((pure))==== 
-<blockquote>Many functions have no effects except the return value and their return value depends only on the parameters and/or global variables 
  
-Many functions do not examine any values except their arguments, and have no effects except the return value.<cite>[[https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes|Using the GNU Compiler Collection]], {{ :lang:c:syntaxe:attribute:using_the_gnu_compiler_collection_gcc_common_function_attributes.html.maff |Archive}}</cite></blockquote> 
- 
-Les deux n'ont pas le droit de modifier quoi que ce soit en dehors de la fonction. 
- 
-''pure'' a accès aux arguments et aux variables globales et peut déréférencer à pointeur alors que ''const'' n'a accès qu'aux arguments et ne peut pas déréférencer un pointeur. 
- 
-====__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). 
- 
-<code c> 
-extern const unsigned char __attribute__((weak)) variable; // Numéro de l'automate 
- 
-const unsigned char __attribute__((weak)) variable = 1; 
- 
-const unsigned char variable = 2; 
-</code> 
lang/c/syntaxe/attribute.1499029906.txt.gz · Dernière modification : 2017/07/02 23:11 de root