Ищете альтернативу множеству вложенных # ifdef-s - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь добавить следующую концепцию в мой C-код (CMAKE_* определения независимы друг от друга):

#define DEF N

#ifdef CMAKE_X
redefine DEF (DEF + CMAKE_X)
#endif

#ifdef CMAKE_Y
redefine DEF (DEF + CMAKE_Y)
#endif

#ifdef CMAKE_Z
redefine DEF (DEF + CMAKE_Z)
#endif

...

Я ищу какой-либо способ лучше, чем большой сложный наборвложенных операторов ifdef-s.Есть ли альтернатива?

1 Ответ

0 голосов
/ 29 мая 2018

Похоже, вы ищете что-то вроде этого:

#define DEF_0 N

#ifdef CMAKE_X
#define DEF_X (DEF_0 + CMAKE_X)
#else
#define DEF_X DEF_0
#endif

#ifdef CMAKE_Y
#define DEF_Y (DEF_X + CMAKE_Y)
#else
#define DEF_Y DEF_X
#endif

#ifdef CMAKE_Z
redefine DEF_Z (DEF_Y + CMAKE_Z)
#else
#define DEF_Z DEF_Y
#endif

#define DEF DEF_Z

Т.е. создать промежуточные макросы, каждый из которых может иметь или не иметь дополнения к предыдущему.

...