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

在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存储库。

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

 __attribute__ ((visibility("default"))) 

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

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