我的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)
答案 0 :(得分:3)
G ++不支持restrict
关键字,该关键字在C中有效,但在C ++中无效。
它 支持__restrict__
作为扩展,因此您可以使用-Drestrict=__restrict__
进行编译,以使用预处理器将其转换为可接受的关键字。
有关详细信息,请参阅http://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html。
这个问题似乎是由于你在操作系统上使用{C}似乎与C ++不兼容的-DISOC99_SOURCE
引起的,因为它启用了在C ++中无效的C99功能。在GNU / Linux上,我建议使用-D_GNU_SOURCE
,但我怀疑它适用于Mac OS X.
所以代替-Drestrict=__restrict__
你可以停止使用-D_ISOC99_SOURCE
- 为什么你甚至需要C ++?