gcc stdio.h错误

时间:2011-12-13 20:02:52

标签: c++ c linux gcc

编译gcc -c -O2...时出现这些错误:

In file included from /usr/include/stdio.h:930:0,
                 from /home/martin/foo.c:3:
/usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘sprintf’:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:3: error: invalid use of ‘__builtin_va_arg_pack ()’
/usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘snprintf’:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:65:3: error: invalid use of ‘__builtin_va_arg_pack ()’

仅在-O2打开时才会发生,gcc 4.6.1。有什么不对?我已经检查了所有的标头警卫,看起来没问题。

1 个答案:

答案 0 :(得分:-1)

是否有充分的理由使用-O2?将-O [或-O1]代替-O2。如果你真的需要使用-O2并希望缩小'罪魁祸首标志',一个建议就是使用-O1,然后逐个启用gcc标记,用于-O2 1}}。以下是-O2使用的标记列表。

      -fthread-jumps 
      -falign-functions  
      -falign-jumps 
      -falign-loops  
      -falign-labels 
      ... // there is a big list 

您可以在gcc manual on optimization's中找到这些标记。手册应详细说明每个标志及其用途。