2011-09-21 42 views
1

我正在用mupdf库中的一些函数的定制版本编译mupdf。有两个函数似乎互相调用,所以当我创建它们的_custom版本时,会在编译时发出错误。隐式声明静态的问题(编译定制mupdf库)

[email protected]:~/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

在行191中,函数fmt_array_custom在没有事先声明的情况下被调用。因此,编译器隐含地声明了一个声明(非static)。

在第304行后面,它看到的实际函数声明/定义是static。这是一个冲突。

为了解决这个问题,您可以在第191行之前添加一个声明。只需从第304行复制函数proto-type(不含主体)。