2014-05-20 114 views
-4

我試圖建立我的代碼,但在頭文件中得到錯誤以下行 sample.h錯誤:預期的標識符

1 #ifndef FORMAT_STRING_H 
2 #define FORMAT_STRING_H 
3 
4 #define FORMAT_STR(ovr, x, y, ...) \ 
5 { \ 
6  char buf[100]; memset(buf, 0, 100);\ 
7  using namespace std; \ 
8  snprintf(buf, 99, __VA_ARGS__); \ 
9  ovr->drawStr(x, y, buf);\ 
10 } 
11 #endif //FORMAT_STRING_H 

,並在第4行的錯誤得到錯誤:預期的標識符。 我無法完全理解上述行中的問題。 我使用Ti DSP C6000 Code Generation Tools 7.3.0B3編譯器。 編譯C++代碼。

+4

**顯示你的[testcase](http://sscce.org)。** –

+3

只需編寫一個正常的函數。 –

+0

[WorksForMe](http://coliru.stacked-crooked.com/a/50fb7b089b7cab0b)...你應該提供一個*完整的例子,以便我們可以重現你的問題。 – Mankarse

回答

3

看來你的編譯器不支持一個類似函數的宏,它的參數數量是可變的。

檢查這一點非常簡單。寫例如

#define FORMAT_STR(ovr, x, y, ...)\ 
{\ 
} 

並且不要在代碼中調用它。如果編譯器會發出相同的錯誤,那麼它確實不支持這樣的宏。

+1

似乎是正確的,[C6000編譯器](http://processors.wiki.ti.com/index.php/Overview_of_C%2B%2B_Support_in_TI_Compilers#Status_as_of_March_2014)不支持C++ 11,並且[C++ 03標準不支持可變宏](http://stackoverflow.com/questions/4786649/are-variadic-macros-nonstandard)。 –