проблемы с неявным объявлением static (компиляция настраиваемой библиотеки mupdf) - PullRequest
1 голос
/ 21 сентября 2011

Я компилирую mupdf с пользовательской версией некоторых функций в библиотеке mupdf. Кажется, есть две функции, которые вызывают друг друга, поэтому при создании версии _custom во время компиляции выдается ошибка.

pc@pc:~/sviluppo/mupdf-0.9$ make
CC build/debug/obj_print.o
fitz/obj_print.c: In function ‘fmt_array_custom’:
fitz/obj_print.c:191:4: warning: implicit declaration of function ‘fmt_obj_custom’
fitz/obj_print.c: At top level:
fitz/obj_print.c:304:13: warning: conflicting types for ‘fmt_obj_custom’
fitz/obj_print.c:304:13: error: static declaration of ‘fmt_obj_custom’ follows non-static declaration
fitz/obj_print.c:191:4: note: previous implicit declaration of ‘fmt_obj_custom’ was here
make: *** [build/debug/obj_print.o] Errore 1

Что не так? версия функций по умолчанию уже вызывает друг друга одинаково.

1 Ответ

1 голос
/ 21 сентября 2011

В строке 191 функция fmt_array_custom вызывается без предварительного объявления.Таким образом, компилятор неявно принимает объявление (не static).

Позже в строке 304 он видит фактическое объявление / определение функции, равное static.Это конфликт.

Для исправления этого вы можете добавить объявление перед строкой 191. Просто скопируйте прототип функции (без тела) из строки 304.

...