GCC抱怨非标准呼叫约定“ZEND_API”

时间:2012-02-03 06:48:22

标签: c gcc header

在PHP的Zend引擎代码中,我在头文件中看到如下所示的行。

ZEND_API char *zend_strndup(const char *s, unsigned int length) ZEND_ATTRIBUTE_MALLOC;

我是专业C / C ++编程的新手。

当我尝试使用gcc编译此软件包中的c文件时,我收到类似

的错误
zend_alloc.h:55: error: expected =, ,, ;, asm or __attribute__ before char

我尝试了命令gcc -I./ -I../TSRM zend_language_*.c

看起来gcc抱怨ZEND_API。 ZEND_API表示什么?任何人都可以帮我弄清楚这个错误发生的原因吗?

SVN repository where the files are located.

1 个答案:

答案 0 :(得分:3)

这些文件是PHP解释器的一部分,并不打算与它分开编译。 configure脚本应该将ZEND_API宏定义为:

__attribute__ ((visibility("default")))

在支持它的系统上(例如,GCC 4.0+),在其他编译器上没有任何内容。

如果您只是想构建PHP,请从php.net下载整个源包,并使用configure / make来构建它。构建过程很复杂,并不是要显而易见(甚至可能)手动运行。