我正在使用Clang从源代码构建cairo。我收到以下错误:
src/cairo-quartz-font.c:368:1: error: conflicting types for 'cairo_quartz_font_face_create_for_cgfont'
cairo_quartz_font_face_create_for_cgfont (CGFontRef font)
^
src/cairo-quartz-font.c:247:18: note: previous implicit declaration is here
*font_face = cairo_quartz_font_face_create_for_cgfont (cgFont);
但是,从源头看,我发现了这些定义:
247:
CGFontRef cgFont = NULL;
// ...
*font_face = cairo_quartz_font_face_create_for_cgfont (cgFont);
CGFontRelease (cgFont);
368:
cairo_font_face_t *
cairo_quartz_font_face_create_for_cgfont (CGFontRef font)
{
cairo_quartz_font_face_t *font_face;
// ...
完整的来源是mirrored here。
这里有什么类型的冲突?
答案 0 :(得分:2)
当你在第247行使用函数cairo_quartz_font_face_create_for_cgfont
时,它是未声明的(除非你没有使用-Wall
,否则你应该收到警告)。因此,编译器填充假定的返回类型int
。
当您最终声明该函数时,其返回类型不是int
。这是一种类型冲突。
通常#include
带有函数原型的标题可以避免这种问题。