2

我的 C++ 编译器无法理解该restrict指令。

如何抑制这些错误?

/usr/include/inttypes.h:271: error: expected ',' or '...' before 'nptr'

usr/include/inttypes.h包含

extern intmax_t strtoimax(const char * restrict nptr, char ** restrict endptr, int base);

编译命令:

g++ -c -pipe -g -gdwarf-2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall
-W -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE
-DPIC -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -o player.o ../dir/player.cpp

编辑:

$ g++ --version
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
4

1 回答 1

2

G++ 不支持restrict关键字,该关键字在 C 中有效,但在 C++ 中无效。

确实支持__restrict__作为扩展,因此您可以编译-Drestrict=__restrict__以使用预处理器将其转换为接受的关键字。

有关详细信息,请参阅http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html

该问题似乎是由于您-DISOC99_SOURCE在操作系统上使用的似乎与 C++ 不兼容造成的,因为它启用了在 C++ 中无效的 C99 功能。在 GNU/Linux 上,我建议-D_GNU_SOURCE改用,但我怀疑它是否适用于 Mac OS X。

所以-Drestrict=__restrict__你可以停止使用-D_ISOC99_SOURCE——为什么你甚至需要 C++ 呢?

于 2012-06-26T12:15:28.913 回答