gpt4 book ai didi

c - 为什么 Clang 认为这些类型在开罗会发生冲突?

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:22 25 4
gpt4 key购买 nike

我正在 build 来自使用 Clang 的源代码。我收到以下错误:

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 .

这里的类型冲突是什么?

最佳答案

当您在第 247 行使用函数 cairo_quartz_font_face_create_for_cgfont 时,它是未声明的(您应该收到警告,除非您未能使用 -Wall)。因此,编译器填充了一个假设的返回类型 int

当你最终声明函数时,它的返回类型不是int。所以这是类型冲突。

通常这种问题可以通过 #include 带有函数原型(prototype)的 header 来避免。

关于c - 为什么 Clang 认为这些类型在开罗会发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com