GCC жалуется на нестандартное соглашение о вызовах "ZEND_API" - PullRequest
0 голосов
/ 03 февраля 2012

В коде движка Zend для PHP я вижу строки, подобные приведенным ниже, в заголовочных файлах.

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

Я новичок в профессиональном программировании на C / C ++.

Когда я пытаюсь скомпилировать файлы c в этом пакете, используя gcc, я получаю сообщения об ошибках типа

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

Я попробовал команду gcc -I./ -I../TSRM zend_language_*.c

Похоже, gcc жалуется на ZEND_API. Что указывает ZEND_API? Может кто-нибудь помочь мне выяснить, почему эта ошибка происходит?

Репозиторий SVN, в котором находятся файлы.

1 Ответ

3 голосов
/ 03 февраля 2012

Эти файлы являются частью интерпретатора PHP и не предназначены для компиляции отдельно от него. Предполагается, что скрипт configure определяет макрос ZEND_API для:

__attribute__ ((visibility("default")))

в системах, которые его поддерживают (например, GCC 4.0+), и ничего в других компиляторах.

Если вы просто пытаетесь собрать PHP, загрузите весь пакет исходного кода с php.net и используйте configure / make для его сборки. Процесс сборки сложен и не предназначен для очевидного (или даже возможного) запуска вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...