2012-03-30 12 views
5

Próbuję przekazać wartość makra C do preprocesora z opcją -Dmacro = wartość gcc. Jednak nie robi to, czego się spodziewam. To podstawy mojego kodu:dlaczego nie jest przekazywana wartość makr gcc z wiersza poleceń?

#define T0 0 
#define T1 0 
#define T2 0 
#define T3 0 

int main(){ 

    int f[9]; 

    start(f[T0], f[T1], f[T2], f[T3]); 

    return 0; 
} 

Running gcc -DT3=1 -E pokazuje preprocesor nie zastępuje pierwotną wartość T3. Czego mi brakuje i jak można przekazać wartość poprawnie?

+0

Sam wpadłem na ten problem i byłem nieco zaskoczony b/c Zawsze uważałem, że definicja wiersza poleceń powinna przesłonić definicję śródliniową. Niejasno pamiętam, że robi to kompilator Microsoftu, ale niestety nie mam do niego dostępu od jakiegoś czasu. Każdy z MSVC może przetestować to i opublikować informacje, które będą miłe. – ysap

Odpowiedz

7

Afaik, że przełącznik zdefiniuje makro, ale twój kod następnie nadpisuje go z powrotem do 0. Usuń definicję z kodu lub otocz ją ifdef i powinno być w porządku.

+3

Otaczanie go ifdef wykonało lewę, dzięki. – quetric

Powiązane problemy