Пожалуйста, посмотрите на следующий код
#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’ не должно, как мудрый. Но это не работает. Пожалуйста помоги.
Для условной компиляции код должен выглядеть примерно так:
#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;
}
А затем при компиляции кода укажите аргумент командной строки для определения, например, для: gcc -DSomedef test.c -o test, чтобы включить код и удалить определение командной строки для удаления кода
Примечание. Вы проверили «#if true» для условной компиляции, этот оператор всегда будет истинным и, следовательно, будет включать эту часть кода при компиляции.
Других решений пока нет …