Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gcc:警告:';使用';忽略属性_C_Gcc - Fatal编程技术网

gcc:警告:';使用';忽略属性

gcc:警告:';使用';忽略属性,c,gcc,C,Gcc,我正在用-O2标志编译我的程序,我看到变量的属性被忽略了。这是为什么?我如何强制它接受该属性 extern const int my_var __attribute__((used)); // but my_var is not actually // used in this file, but I'd

我正在用-O2标志编译我的程序,我看到变量的属性被忽略了。这是为什么?我如何强制它接受该属性

extern const int my_var __attribute__((used)); // but my_var is not actually 
                                               // used in this file, but I'd 
                                               // like it to be included in 
                                               // the symbol table

warning: 'used' attribute ignored
\uuuu attribute_uuu((uuu used_uuu))
仅在
静态对象或函数定义上有意义,并告诉编译器发出定义,即使它似乎根本没有被引用,在这种情况下,它通常会被完全优化。使用外部链接定义的对象将永远不会被优化(可能在整个程序模式下或由链接器/LTO进行优化除外)。但你的用法甚至不是一个定义;它是一个外部对象的声明

如果您的目标确实是强制对象文件包含对此外部符号的引用,即使它未被使用,您可以执行以下操作:

extern const int my_var;
static const int *const dummy __attribute__((__used__)) = &my_var;
这会创建一个(无用的)对
my\u var
的引用,而该引用永远无法优化。

\uuuu属性(使用的)(\uu))
仅在
静态对象或函数定义上有意义,并告诉编译器发出定义,即使它看起来根本没有被引用,在这种情况下,它通常会被完全优化。使用外部链接定义的对象将永远不会被优化(可能在整个程序模式下或由链接器/LTO进行优化除外)。但你的用法甚至不是一个定义;它是一个外部对象的声明

如果您的目标确实是强制对象文件包含对此外部符号的引用,即使它未被使用,您可以执行以下操作:

extern const int my_var;
static const int *const dummy __attribute__((__used__)) = &my_var;
这会创建一个(无用的)对
my\u var
的引用,永远无法优化