Funktion nur deklarieren aber nicht definieren



  • Hi,

    muss man prinzipiell nicht jede Funktion definieren, wenn man sie zuvor deklariert hat, oder ist das nur notwendigt, wenn ich die Funktion tatsächlich verwende?

    Bsp:

    struct Foo{
    int i;
    int get();
    };
    
    int main()
    {
        Foo F;
    
    }
    

    In meinem struct habe ich die Funktion "get()". Hier fehlen aber die {} Klammern am Ende. Müsste ich für einen fehlerfreien Verlauf nicht die get() Funktion später definieren bzw. die {} Klammern setzen?

    int get(){}
    

    grüße,


  • Mod

    Entitäten müssen nur definiert werden, wenn sie auch (zur Laufzeit) "verwendet" werden - wobei dieser vage Begriff im Standard präziser als odr-use definiert ist.

    (Zwei Funktionsdefinitionen werden bspw. in deinem Programm benötigt und implizit bereitgestellt. Siehst du welche?)



  • Der Standardkonstruktor und die main-Funktion ?


  • Mod

    Bernd_hager schrieb:

    Der Standardkonstruktor und die main-Funktion ?

    Ich redete vom Default-Konstruktor und vom Destruktor.



  • Kommt aber dann auch auf den Compiler/Linker bzw. seine Einstellungen an. Wenn zum Beispiel eine Funktion nur aus einem Teil des Codes aufgerufen wird, bei dem der Optimizer erkennen kann, das er zur Laufzeit nicht erreicht wird.


Log in to reply