Ich baue cairo aus der Quelle mit Clang. Ich erhalte den folgenden Fehler:Warum denkt Clang diese Typen in Kairo Konflikt?
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);
jedoch an der Quelle suchen, finde ich diese Definitionen:
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;
// ...
Die vollständige Quelle ist mirrored here.
Was ist der Typ Konflikt hier?
Wenn Sie eine Funktion aufrufen, die in derselben Übersetzungseinheit wie in diesem Fall definiert ist, reicht es alternativ aus, dass die Definition vor allen Aufrufen angezeigt wird. Auch und insbesondere für statische Funktionen und andere, die nicht von anderen Übersetzungseinheiten aufgerufen werden, ist es möglicherweise sinnvoller, eine Deklaration der Funktion direkt in die Quelldatei einzufügen, bevor sie aufgerufen wird. –
Ja, es war eine fehlende Erklärung. In der Header-Datei wird die Funktion nur deklariert, wenn das Flag 'CAIRO_HAS_QUARTZ_FONT' gesetzt ist. Wenn Sie dies an den Compiler in der Befehlszeile übergeben, wurde das Problem gelöst. – sdgfsdh