2016-04-21 106 views
4

所有標記粘貼混亂

我的代碼是這樣的:

#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預處理##表成表,其實我想

TTP_ROUTE_TABLE_ENTRY_INC(ipv4_host) 

會翻譯成這樣:

static inline void \ 
ttp_route_ipv4_host_inc(void) \ 
{ \ 
    cur_l3_ipv4_host_table_entries++; \ 
} 

所以我不知道這有什麼錯我的代碼。感謝您的幫助。

回答

7

你需要另一套#參數table後:

ttp_route_##table##_inc(void) 

這同樣適用於含有table其他線路。

+0

謝謝,那個作品,你很善良 – batmancn