передача определений препроцессору в командной строке

а есть ли возможность повлиять на препроцессорную обработку через командную строку. скажем передать какое - либо определение ?

ну скажем можно ли передать Deb из командной строки ???

#include "Iostream"
using namespace std;


#ifdef Deb
#define MYFUNC void f() {cout<<"YesD";}
#else
#define MYFUNC void f() {cout<<"NoD";}
#endif 

MYFUNC


int main()
{
    f();
   
}

Ответы (1 шт):

Автор решения: Harry

Конечно. Например, в Visual C++ для этого есть параметр командной строки /D.

Как указывают в комментариях, для GCC и Clang этот ключик - -D.

Для тех, кому все еще непонятно.

test.cpp

#include <iostream>
using namespace std; 
#ifdef DEBUG     
#define MYFUNC void f() {cout<<"YesD";} 
#else 
#define MYFUNC void f() {cout<<"NoD";} 
#endif   

MYFUNC   
int main() 
{
      f();     
}

Компиляция и запуск:

Командная строка               Вывод при запуске test.exe

cl /EHs test.cpp               NoD

cl /DDEBUG test.cpp            YesD

Для особо неверующих :) -

введите сюда описание изображения

→ Ссылка