编译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时发生。有什么事吗我检查了所有头球后卫,他们似乎还可以。

最佳答案

使用-O2是否有充分的理由?将使用-O [或-O1]代替-O2。如果确实需要使用-O2并希望缩小“罪魁祸首”标志,则建议使用-O1,然后依次打开用于gcc-O2标志。这是-O2使用的标志的列表。

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


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

关于c++ - gcc stdio.h错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8495408/

10-13 06:19