2011-09-14 44 views
0

我有一個問題,我需要將結構變量的名稱轉換爲char。例如:將結構轉換爲字符

struct CARINFO a; 

當我的函數需要的CARINFO a的說法,我想在功能同時使用a"a"

任何人都可以幫忙嗎?

+0

我*想*你在談論C語言,你能證實這一點嗎? –

+0

如果您說要達到目的的目的可能會提供更好的答案,但簡短答案是否定的,您不能這樣做。 –

+0

是的,這是在c。 這就是汽車信息結構的樣子。 { \t/*汽車正面的位置。由於所有車輛都假設爲 \t要面向北或西,該位置代表 \t該車的西北段*/ \t LOCATION front; \t/*汽車的方向*/ \t定位方向; \t/*車的長度*/ \t int length; } CARINFO; 不幸的是我無法改變它。 – pseudoabdul

回答

1

您可以在C中做的最好的事情是使用單個宏來定義字符串和變量。沒有運行時檢查可以讓您重新發現變量的名稱。

0

你可以通過將函數變成一個宏,並使用#運算符(字符串化)來獲取hte參數的名稱。

例如:

#define MYFUNC(x) \ 
do { real_func(x); printf("parameter name: " #x "\n"); } while (0) 
2

您可以使用宏來通過這兩個指針,你的結構和它的名字到實際功能。

struct bar { 
    // blah 
}; 

void actual_foo(struct bar *b, char *bname) { 
    // whatever 
} 

#define foo(bar) actual_foo(&(bar), #bar) 

int main() { 
    struct bar b; 
    foo(b); 
}