到目前为止,我正在尝试将Wolfenstein: Enemy Territory编译为x86_64 native。在处理了ASM指令,amd64特定的处理器寄存器和其他奇怪的东西后,我最终得到了三个漂亮的GCC编译错误:
url.c:xxxx:xx error: expected identifier or '(' before numeric constant
sigaction( SIGALRM, &sigact, NULL );
^
如果我在Google上输入“sigaction”,我几乎每个链接都会被访问,所以任何帮助都会受到热烈欢迎。
#include <signal.h>
在场。
#define _POSIX_SOURCE
#define _XOPEN_SOURCE
#define _POSIX_C_SOURCE
也存在。通过使用字符串earch方法,我可以看到没有“覆盖”结构/函数sigaction(),所以我想这不是问题。因为源文件长约4 000行,所以我不会在此处粘贴整个代码(但原始文件可用there)。我用以下标志编译(orinigal Makefile只有-m32标志,当然,我删除了):
gcc --std=c99 -D_XOPEN_SOURCE
我仍然得到同样的错误。这开始超出我的理解,所以这就是为什么我问你:如何摆脱这个错误? 从我读过的内容来看,我认为它与POSIX不兼容ANSI(不允许编译sigaction())。
另外,我正在运行Ubuntu 14.04 64位(因为它预装了,我一直懒得安装其他发行版),Enemy Territory编译scons(我的版本是2.3.0)和GCC版本是4.8。 2-19。
提前致谢。