2013-05-31 164 views
-1
#define GETSTRING(s) return #s 

enum a_type { SMALL, MEDIUM, LARGE }; 

const char* get_data(a_type a) { return GETSTRING(a); } 


int main() { 

    a_type at = SMALL; 

    const char* s = get_data(at); 

    return 0; 
} 

我得到編譯器錯誤:如何解決這個stringise錯誤

main.cpp(5) : error C2059: syntax error : 'return'

我做了什麼錯?

+2

'返回的GetString(一);'擴展爲'數據回傳 「一」;'不是你想要的。 (注意,你不能使用預處理器來實現你想要的東西,它在編譯階段完成它的工作。) –

+0

@DanielFischer如果我刪除了雙重返回,即改變爲:const char * get_data(a_type a){的GetString(一);它在運行時工作。 –

+0

是的,但它會一直返回'「a」'。 –

回答

3

如果使用gcc -E輸出預處理源,你會看到你有一個額外returnget_data

const char* get_data(a_type a) { return return "a"; } 
+0

我有一個愚蠢的星期五:(謝謝你。 –