2016-08-31 5 views
3

Utilisation gcc (testé 5.4.0 et 6.1.1) avec ce qui suit -Wall donne un avertissement au sujet d'une variable inutilisée pour auto_ref, mais pas pour les autres variables. Clang n'émet aucun avertissement. Cette différence est-elle automatique pour les variables & et pourquoi?gcc et __attribute __ ((utilisé)) pour les références automobiles

int main() { 
    int __attribute__((unused)) int_var_unused = 42; 
    int int_var = 42; 
    int& __attribute__((unused)) int_ref = int_var; 
    auto __attribute__((unused)) auto_var_unused = 42; 
    auto auto_var = 42; 
    auto& __attribute__((unused)) auto_ref = auto_var; 
    return 0; 
} 

Répondre

1

ne sais pas si c'est un bogue dans GCC mais il fonctionne comme ceci

__attribute__((unused)) auto& auto_ref = auto_var; 

et comme celui-ci

auto& auto_ref __attribute__((unused)) = auto_var; 

Je suppose que l'attribut est jamais destiné à être placé entre la déclaration de type et le nom. Dans la documentation, je vois la deuxième version comme un exemple surtout.