Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
lang:c:attribut [2020/07/13 23:48] – [__attribute__((weak)) et extern] : code => gh root | lang:c:attribut [2021/01/05 21:50] (Version actuelle) – [restrict] : ajout du code source root |
---|
<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> |
| |
| |
{{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. |