【发布时间】:2014-01-09 05:48:51
【问题描述】:
我有一段代码如下
Local_DATA[0] = * ((int32_T *) event_structure + 1);
Local_DATA[1] = * ((int32_T *) event_structure + 2);
Local_DATA[2] = * ((int32_T *) event_structure + 3);
Local_DATA[3] = * ((int32_T *) event_structure + 4);
我必须做一个像
这样的预处理器 #ifdef ABC
Local_DATA[0] = * ((int32_T *) event_structure + 1);
Local_DATA[1] = * ((int32_T *) event_structure + 2);
Local_DATA[2] = * ((int32_T *) event_structure + 3);
Local_DATA[3] = * ((int32_T *) event_structure + 4);
#else
Local_DATA[0] = ntohl (* ((int32_T *) event_structure + 1));
Local_DATA[1] = ntohl (* ((int32_T *) event_structure + 2));
Local_DATA[2] = ntohl (* ((int32_T *) event_structure + 3));
Local_DATA[3] = ntohl (* ((int32_T *) event_structure + 4));
#endif
我有很多行代码必须手动执行。有没有办法定义宏之类的东西?
【问题讨论】:
-
确保数据始终按网络字节顺序可能会更容易,那么您就不需要条件预处理器了。
-
你能告诉我们每个组的相似和不同的部分是什么吗?如果不知道哪些部分是恒定的,哪些是可变的,我们就无法展示最好的宏。
-
ntohl 是宏,int32_T 是数据类型,event_structure 和 Local_Data 是变量。
标签: c macros c-preprocessor