我正在使用gcc(特别是avr-gcc).
所以这是我的难题:
假设我在某处定义了这些:
#define THING_0_A 0
#define THING_0_B 1
#define THING_1_A 0
Run Code Online (Sandbox Code Playgroud)
然后在第二个文件中我有这个:
#define CONCAT_(A,B,C) A ## B ## C
#define CONCAT(A,B,C) CONCAT_(A,B,C)
#define ID 0
#define THING_N(A) CONCAT(THING_,ID,A)
Run Code Online (Sandbox Code Playgroud)
有了这个我现在有一些表达式(仍然在第二个文件中):
THING_N(_A) // evaluates to 0
THING_N(_B) // evaluates to 1
THING_N(_C) // evaluates to... nothing? Or undefined? Or THING_0_C?
Run Code Online (Sandbox Code Playgroud)
现在,我正在努力解决的是如何做到这一点(还在第二个文件中):
#ifdef THING_N(_A)
// Do something knowing that THING_N(_A) is defined (in this case THING_0_A)
#endif
Run Code Online (Sandbox Code Playgroud)
要么:
#if THING_N(_A)
// Do something knowing that the value THING_N(_A) evaluates to is defined …Run Code Online (Sandbox Code Playgroud)