我已经写了一个宏,但是当我使用代码时,我得到了预期的标识符错误。
下面是我的宏
#define ITK(arguments) \
{ \
int iFail=0; \
iFail = arguments; \
if(iFail != ITK_ok) \
{ \
char* s; \
TC_write_syslog("Following Method Retruns error "#arguments "\n");\
TC_write_syslog("Error is in the line [%d] of the file ["__FILE__"]\n",[__LINE__]);\
EMH_ask_error_text(iFail,&s);\
TC_write_syslog("And the error is [%s]",s);\
if(s!=0) MEM_FREE(s);\
} \
}
答案 0 :(得分:0)
正如戴维斯·赫林(Davis Herring)所说,原因是您的float values[4] { 0.f, 1.f, 0.f, 1.f };
unsigned int texId;
glGenTextures(1, &texId);
glBindTexture(GL_TEXTURE_2D, texId);
// set filter and wrap
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// copy values
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, 2, 2, 0, GL_RED, GL_FLOAT, values);
当您迷路并且看不到这种情况下的错误在哪里时,请查看预处理后的代码,例如,使用 g ++ 执行[__LINE__]
,如果您仍然看不到 temp.cc 在 temp.cc 中有趣的代码部分添加换行符,然后编译 temp.cc 进行查找在编译器错误/警告时
答案 1 :(得分:0)
在我看来像是一个简单的错字。您需要在此处删除[
和]
:
TC_write_syslog("Error is in the line [%d] of the file ["__FILE__"]\n",[__LINE__]);
// ^ ^
请注意,您可以在编译时将%d
转换为字符串文字,而不是在运行时使用printf的__LINE__
将__LINE__
插入字符串中:
#define STR(x) STR_(x)
#define STR_(x) #x
TC_write_syslog("Error is in the line " STR(__LINE__) " of the file ["__FILE__"]\n");