2016-01-21 4 views
1

Dire que j'ai mon programme compilé avec O2 et justepragma autour de la fonction affectent les fonctions internes

#pragma GCC push_options 
#pragma GCC optimize("O0") 
my_func 
{ 
    other_func(); 
} 
#pragma GCC pop_options 

Est-pragma aussi affecter other_func de quelque façon?

Merci

+2

Comment pourrait-il affecter 'other_func'? C'est juste un appel. Les paramètres de 'other_func' sont déterminés par les paramètres pragmas et compilateur à l'endroit où' other_func' est défini, c'est-à-dire où son corps est implémenté. –

+0

C'est ce que j'ai pensé aussi. Trouvé aucune information à ce sujet cependant. Merci – CRC

+0

Avec le 'push_options' et' pop_options' vous créez une "portée" locale pour le pragma 'optimize', [voir ici] (https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option- Pragmas.html # Function-Specific-Option-Pragmas). Autrement dit, seules les fonctions après le pragma 'optimze', mais avant de restaurer les anciens paramètres avec' pop_options' devraient être compilées avec le niveau d'optimisation 0. –

Répondre

0

Il n'affectera pas other_func() car il est une instruction jmp ici assamble.