全部
我的代码是这样的:
#define TTP_ROUTE_TABLE_ENTRY_INC(table) \
static inline void \
ttp_route_##table_inc(void) \
{ \
cur_l3_##table_table_entries++; \
}
TTP_ROUTE_TABLE_ENTRY_INC(ipv4_host)
TTP_ROUTE_TABLE_ENTRY_INC(ipv4_route)
TTP_ROUTE_TABLE_ENTRY_INC(ipv6_host)
TTP_ROUTE_TABLE_ENTRY_INC(ipv6_route)
#undef TTP_ROUTE_TABLE_ENTRY_INC
但是 gcc 警告:
lib/ttp-route-table.c:130:1: error: redefinition of 'ttp_route_table_inc'
所以我认为GCC将##table预处理成表,实际上我想要
TTP_ROUTE_TABLE_ENTRY_INC(ipv4_host)
将被翻译成这样:
static inline void \
ttp_route_ipv4_host_inc(void) \
{ \
cur_l3_ipv4_host_table_entries++; \
}
所以我不知道我的代码有什么问题。感谢您的帮助。
最佳答案
在参数 table
之后你需要另一组 #
:
ttp_route_##table##_inc(void)
其他包含 table
的行也是如此。
关于c - token 粘贴困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765165/