在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表示什么?任何人都可以帮我弄清楚这个错误发生的原因吗?
答案 0 :(得分:3)
这些文件是PHP解释器的一部分,并不打算与它分开编译。 configure脚本应该将ZEND_API
宏定义为:
__attribute__ ((visibility("default")))
在支持它的系统上(例如,GCC 4.0+),在其他编译器上没有任何内容。
如果您只是想构建PHP,请从php.net下载整个源包,并使用configure
/ make
来构建它。构建过程很复杂,并不是要显而易见(甚至可能)手动运行。