【问题标题】:troubles with implicit declaration static (compiling customized mupdf library)隐式声明静态的麻烦(编译自定义mupdf库)
【发布时间】:2011-11-21 19:52:57
【问题描述】:

我正在使用 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

怎么了?函数的默认版本已经以相同的方式相互调用。

【问题讨论】:

    标签: c static compilation implicit mupdf


    【解决方案1】:

    在第 191 行中,函数fmt_array_custom 被调用而没有事先声明。所以编译器隐含地假设一个声明(非static)。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多