Есть ли способ иметь условный препроцессор в c ++ - PullRequest
0 голосов
/ 20 июня 2020

Я хочу создать условный макрос препроцессора. То, что я хочу сделать, похоже на DEBUG(LEVEL, MESSAGE), и я хочу, чтобы он вел себя так, как если бы я написал:

#ifdef(LEVEL)
std::cout<<MESSAGE<<std::endl;
#endif

Есть ли способ сделать это в C ++?

Это просто Я хочу дать себе дополнительный комфорт для чтения, это не очень важно.

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Да, вы можете:

#define LEVEL 100
#if LEVEL == 100   
    std::cout<< "whatever";
#endif

вы можете найти список директив здесь

EDIT: вы также можете сделать что-то вроде этого:

#define DEBUG(X,MESSAGE) if(X==100)std::cout<<MESSAGE<<endl;
1 голос
/ 20 июня 2020

Хорошая информация об инструкциях препроцессора может быть найдена здесь и здесь . Я лично рекомендую вторую ссылку, так как она сильно отредактирована.

Ответ на ваш фрагмент кода:

enum level
{
    m_00,
    m_01,
    m_02,
};
// Create: Global Instruction 
#define Args(_instruction_,_level_,_output_)\
_instruction_==_level_?printf(_output_):0;

#define Foo 1 // Example

void main( ) 
{
    Args( Foo, level::m_01, "Level has been verified..." ) 
};

Очевидно, вы можете изменить это в соответствии со своими потребностями, но идея остается той же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...