我有一个C程序,它具有特定于平台的定义,用于访问低级硬件.在某些平台上,两个宏指向同一个变量,而另一个平台则不同:
//Platform_One.h #define FOO_PORT (io.portA) #define BAR_PORT (io.portB) //Platform_Two.h #define FOO_PORT (io.portC) #define BAR_PORT (io.portC) //same
我有一些初始化代码根据#defines是否相同而不同.从概念上讲,我喜欢这样的代码:
callback_struct_t callbacks[] = { #if FOO_PORT == BAR_PORT //unfortunately invalid {&FOO_PORT,handle_foo_bar_func},#else {&FOO_PORT,handle_foo_func},{&BAR_PORT,handle_bar_func},#endif {0,0} };
如果两个任意宏具有相同的定义,是否有可靠的方法在编译时进行测试?