Я новичок в c
. Я пытаюсь читать через Compiler Design In C
Голуба. В файле с именем set.c
в приложении A к книге автор использует объявление function prototype
, как показано ниже.Объявление прототипа функции не скомпилировано
extern int _addset P((SET* , int));
Это не во время компиляции для меня. Ошибка указана ниже. Я использую gcc (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4
.
include/tools/set.h:25:37: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘P’
extern void delset P((SET*));
Когда я изменил декларацию, как показано ниже, код компилируется.
extern int _addset(SET* , int);
Так как я не слишком хорошо знаком с c
, я не уверен, если я делаю что-то неправильно, изменяя код, как это. Может ли кто-нибудь сказать мне, является ли приведенный выше синтаксис действительным и почему синтаксис из книги не компилируется? Голуб подчеркивает важность использования ANSI C, но на основании того, что я читал, GCC соответствует требованиям ANSI (или более точно ISO).
Похоже, что это зависит от определения макроса для 'P', которого нет, когда вы пытались его скомпилировать. Вам не хватает некоторых из них? Указывает ли книга определение «P»? –
В верхней части файла заголовка нет файлов. Автор обычно является всеобъемлющим с его кодом. Поэтому я предположил, что «P» - это просто владелец места, который не имеет никакого значения. [Compiler Design In C] (http://www.holub.com/software/compilerDesignInC.pdf) Я связываю книгу только в том случае, если вы заинтересованы. Это ни в коем случае не предложение взглянуть на код, который поможет мне. Хотя, это было бы хорошо. 'Set.h' находится на стр. 696. – ShaggyInjun