simplecpp
simplecpp copied to clipboard
unexpanded inner macro
Example code:
#define MAC2STR(x) x[0],x[1],x[2],x[3],x[4],x[5]
#define FT_DEBUG(fmt, args...) if(pGlobalCtx && pGlobalCtx->debug_level>=2) printf("FT-dbg: "fmt, ##args)
FT_DEBUG(" %02x:%02x:%02x:%02x:%02x:%02x\n", MAC2STR(pCtx->wlan_intf_addr[i]));
Simplecpp does not preprocess this code properly. The MAC2STR is not expanded.
gcc -E
# 0 "a.cpp"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "a.cpp"
if(pGlobalCtx && pGlobalCtx->debug_level>=2) printf("FT-dbg: "fmt, pCtx->wlan_intf_addr[i][0],pCtx->wlan_intf_addr[i][1],pCtx->wlan_intf_addr[i][2],pCtx->wlan_intf_addr[i][3],pCtx->wlan_intf_addr[i][4],pCtx->wlan_intf_addr[i][5]);
clang -E
# 1 "a.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 480 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "a.cpp" 2
if(pGlobalCtx && pGlobalCtx->debug_level>=2) printf("FT-dbg: "" %02x:%02x:%02x:%02x:%02x:%02x\n", pCtx->wlan_intf_addr[i][0],pCtx->wlan_intf_addr[i][1],pCtx->wlan_intf_addr[i][2],pCtx->wlan_intf_addr[i][3],pCtx->wlan_intf_addr[i][4],pCtx->wlan_intf_addr[i][5]);
Current output:
1:
2:
3:
4: if ( pGlobalCtx && pGlobalCtx -> debug_level >= 2 ) printf ( "FT-dbg: " " %02x:%02x:%02x:%02x:%02x:%02x\n" , pCtx -> wlan_intf_addr [ i ] [ 0 ] , pCtx -> wlan_intf_addr [ i ] [ 1 ] , pCtx -> wlan_intf_addr [ i ] [ 2 ] , pCtx -> wlan_intf_addr [ i ] [ 3 ] , pCtx -> wlan_intf_addr [ i ] [ 4 ] , pCtx -> wlan_intf_addr [ i ] [ 5 ] ) ;