2013-04-07 3 views
0

Пожалуйста, посмотрите на следующий кодКомпиляция Только одна часть, если-то еще

#include <iostream> 
using namespace std; 

    int main(){ 
     #if true 
      int fd = 0; 

     #else 
      int dd =0; 
     #endif 
     cout<<fd; 
     //cout<<dd; 

     system("pause"); 
     return 0; 
    } 

Здесь, я пытаюсь собрать только один блок. Если «if» скомпилирован, то «else» не должен, как и мудрый. Но это не работает. Пожалуйста помоги.

+2

Как это работает? Тест LWS прошел нормально. – chris

+1

Работает на моей машине (g ++ из gcc версии 4.2.1 (на основе Apple Inc. build 5658) (LLVM build 2336.11.00)). Какой компилятор вы используете? –

+0

Что именно не работает и как? Опишите ваши ожидаемые и фактические результаты. –

ответ

3

Для условной компиляции кода должен выглядеть следующим образом:

#include <iostream> 
using namespace std; 

int main(){ 
    #ifdef Somedef 
     int fd = 0; 
     cout<<fd; 
    #else 
     int dd =0; 
     cout<<dd; 
    #endif 
    system("pause"); 
    return 0; 
} 

А потом во время компиляции кода дают аргумент командной строки для определения, например, для: НКУ -DSomedef test.c -o тест, чтобы включить код и удалить командную строку define для удаления кода

Примечание: вы проверили «#if true» для условной компиляции, что оператор всегда будет истинным и, следовательно, будет включать эту часть кода во время компиляции.

 Смежные вопросы

  • Нет связанных вопросов^_^