Outils pour utilisateurs

Outils du site


lang:c:attribut

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
Prochaine révision
Révision précédente
lang:c:attribut [2020/07/13 23:48] – [__attribute__((weak)) et extern] : code => gh rootlang:c:attribut [2021/01/05 21:50] (Version actuelle) – [restrict] : ajout du code source root
Ligne 27: Ligne 27:
 <WRAP center round important 60%> <WRAP center round important 60%>
 Rappel : l’attribut ''pure'' n'est pas ''thread-safe'' si la fonction fait appel à une variable globale ou si un de ces arguments peut être modifiée par un autre thread. Rappel : l’attribut ''pure'' n'est pas ''thread-safe'' si la fonction fait appel à une variable globale ou si un de ces arguments peut être modifiée par un autre thread.
 +
 +[[https://stackoverflow.com/questions/45190217/gcc-optimization-of-pure-functions|GCC optimization of pure functions]] {{ :lang:c:attribut:c_-_gcc_optimization_of_pure_functions_-_stack_overflow_2020-07-15_08_31_26_.html |Archive du 19/07/2017 le 15/07/2020}}
 </WRAP> </WRAP>
  
Ligne 63: Ligne 65:
  
 {{gh>https://github.com/bansan85/wiki_le_garrec_fr_travis/blob/master/cpp/attribute/weak1.out}} {{gh>https://github.com/bansan85/wiki_le_garrec_fr_travis/blob/master/cpp/attribute/weak1.out}}
 +
 +====restrict====
 +
 +Mot clé pour indiquer qu'une zone mémoire n'est accédée que par un seul pointeur. Cette restriction n'est évidemment pas thread-safe.
 +
 +Voir l'exemple de Wikipédia sur [[https://fr.m.wikipedia.org/wiki/Restrict|restrict]] {{ :lang:c:attribut:restrict_wikipedia_04_01_2021_20_34_41_.html |Archive du 16/04/2020 le 04/01/2021}}.
 +
 +^Source^Code généré^
 +|{{gh>https://github.com/bansan85/wiki_le_garrec_fr/blob/master/cpp/attribute/restrict1.c 2}}|{{gh>https://github.com/bansan85/wiki_le_garrec_fr_travis/blob/master/cpp/attribute/restrict1.c.asm 3}}|
 +|{{gh>https://github.com/bansan85/wiki_le_garrec_fr/blob/master/cpp/attribute/restrict2.c 3}}|{{gh>https://github.com/bansan85/wiki_le_garrec_fr_travis/blob/master/cpp/attribute/restrict2.c.asm 3}}|
 +
 +Avec ''restrict'', il n'y a pas besoin de relire le contenu de ''*val'' entre les deux instructions.
lang/c/attribut.1594676917.txt.gz · Dernière modification : 2020/07/13 23:48 de root