Forum: Mikrocontroller und Digitale Elektronik Symbole in einer static library definieren --> sinnvoll?


von brechbunkt (Gast)


Lesenswert?

Hallo,

ich hätte eine Verständnissfrage zum Code in einer statischen library. 
Angenommen, wir hätten folgenden Code:
1
int func(void)
2
{
3
    int i=0;
4
5
#ifdef INCREMENT
6
    i++;
7
#endif
8
9
    return i;
10
}

Nun baue ich mir daraus eine static library, ohne dass das Symbol 
INCREMENT definiert wurde. Binde ich die library nun in einem Projekt 
ein, kommt natürlich i=0 als return-Wert zurück.

Binde ich die lib nun aber in einem Prjekt ein, in dem INCREMENT 
definiert wurde, ist der return-Wert dann richtiger weise =0 oder =1?

von Dr. Sommer (Gast)


Lesenswert?

brechbunkt schrieb:
> Nun baue ich mir daraus eine static library
Dabei wird der Code kompiliert, und das i++ bleibt drin.
>, ohne dass das Symbol
> INCREMENT definiert wurde.
Das ist keine Symbol, sondern ein Preprozessor-Makro.
> Binde ich die library nun in einem Projekt
> ein, kommt natürlich i=0 als return-Wert zurück.
Nein, es kommt 1. Denn der Code wurde bereits bei Erstellung der Library 
kompiliert, und das Ergebnis aus der Library in das Programm kopiert.
> Binde ich die lib nun aber in einem Prjekt ein, in dem INCREMENT
> definiert wurde, ist der return-Wert dann richtiger weise =0 oder =1?
Das ist völlig unerheblich.

von user (Gast)


Lesenswert?

Die defines werden zur Compilezeit der Library ausgewertet, nicht zum 
Zeitpunkt des linkens.

von brechbunkt (Gast)


Lesenswert?

ok, danke euch für die schnellen Antworten

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.