2014-05-20 94 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)。 –