C Basis Funktionen ersetzen



  • Ich habe in meinem Programmcode eine eigene Funktion für getline geschrieben, aber mußte später string.h und stdio.h in meinen Programmcode einbinden.

    Das Problem ist jetzt, daß ich bei meiner getline Funktion nun einen Konflikt mit der echten getline Funktion des Systems erhalte:

    exercise_1_18_testproject_b.c:8: error: conflicting types for ‘getline’
    /usr/include/stdio.h:671: note: previous declaration of ‘getline’ was here
    

    Kann man dem Compiler irgendwie sagen, daß er die getline Funktion in stdio.h ignorieren soll?



  • C Anfänger schrieb:

    Ich habe in meinem Programmcode eine eigene Funktion für getline geschrieben, aber mußte später string.h und stdio.h in meinen Programmcode einbinden.

    Das Problem ist jetzt, daß ich bei meiner getline Funktion nun einen Konflikt mit der echten getline Funktion des Systems erhalte:

    exercise_1_18_testproject_b.c:8: error: conflicting types for ‘getline’
    /usr/include/stdio.h:671: note: previous declaration of ‘getline’ was here
    

    Kann man dem Compiler irgendwie sagen, daß er die getline Funktion in stdio.h ignorieren soll?

    Man kann sich mit Makros etwas hinbiegen, ja. Viel schlauer wäre es aber, wenn du deine Funktion umbenennst.



  • hab sowas selbst noch nie gemacht, daher kann ich dazu nicht viel sagen. rüdiger postete mal ein verfahren mit dem man den linker anweisen kann einzelne funktionen zu überschreiben.



  • Sonst könntes du noch die stdio.h umbenennen und in deiner eigenen stdio.h getline auskommentieren.

    MfG.
    Antikalas



  • Falls du den gcc benutzt, kompilier mit -ansi. Dann ist das ganze POSIX-Zeug nicht mit drin (sofern nicht über feature_test_macros angefordert).



  • seldon schrieb:

    Falls du den gcc benutzt, kompilier mit -ansi. Dann ist das ganze POSIX-Zeug nicht mit drin (sofern nicht über feature_test_macros angefordert).

    Danke, genau daran lag es.

    Ich habe vorher den Code immer mit der Option -std=c99 kompiliert und mich nun gewundert warum es nicht mehr geht.
    Die Option -std=c99 stand nicht mehr bei den Compileroptionen drin.

    Jetzt habe ich sie wieder eingetragen und jetzt geht es.


Anmelden zum Antworten