1
私は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です。
ここでタイプの競合はありますか?
また、同じ変換単位で定義されている関数を呼び出す場合は、この場合のように、呼び出しの前に定義が表示されていれば十分です。また、特に静的関数や他の翻訳単位から呼び出されない関数の場合、関数の宣言をソースファイルに直接呼び出す前に、その宣言をソースファイルに直接置く方が適切かもしれません。 –
はい、宣言がありませんでした。ヘッダファイルでは、関数はフラグ 'CAIRO_HAS_QUARTZ_FONT'がセットされている場合にのみ宣言されます。これをコマンドラインでコンパイラに渡すと、問題が解決されました。 – sdgfsdh