Другие способы выполнения условия #if из строки var в C - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь выполнить условие, указанное в строке var "str".
Я пытался поместить его в определение макроса, но оно не работает.
В отличие от этого, когда условие определяется непосредственно как в "CONDITION_DEF".


    #define CONDITION_STR str
    #define CONDITION_DEF defined A && defined B
    #define A 1
    #define B 1<br><br>
    int main(){
        char *str = "defined A && defined B";
        #if CONDITION_STR
        printf("Condition from str: A and B are defined");
        #endif<br>
        #if CONDITION_DEF
        printf("Condition from define: A and B are defined");
        #endif
     }
    

ВЫХОД:

"Condition from define: A and B are defined"

Условие помещается в строковую переменную, чтобы я мог изменить его во время выполнения.
Есть ли другой способ быть в состоянии выполнить условие #if из строковой переменной?
Спасибо!

1 Ответ

4 голосов
/ 28 апреля 2020

Это невозможно, так как предварительная обработка выполняется перед фактической компиляцией кода C. Препроцессор ничего не знает о C и C переменных.

...