-
-
[旧帖]
[求助]结构体成员访问操作符.和->的对象加括号后VC报语法错误
0.00雪花
-
发表于:
2009-9-17 19:09
1472
-
[旧帖] [求助]结构体成员访问操作符.和->的对象加括号后VC报语法错误
0.00雪花
求助事情: 结构体成员访问操作符.和->的对象加括号后VC报语法错误,查过K&R的黑皮书,C缺陷和陷阱,C专家编程,CSDN,MS和IBM的网站都没有找到相关的语言宪法。
出错信息: error C2059: syntax error : '('
编译环境: VC 6.0
问题背景: 做过一个代码静态检查相关的项目,为了提高代码健壮性,将宏的伪参数都加上了括号,但是有一个宏做的比较特别,它的参数是结构体的成员变量,加上括号后编译报错(当时用的编译环境是gcc)。
相关代码:
#include <stdio.h>
struct tag
{
int a;
int b;
};
int main(int argc, char *argv[])
{
struct tag var = {1,2};
struct tag *op = &var;
int i = op->a; //(op)->a; OK op->(a); NG
int j = var.b; //(var).b; OK var.(b); NG
printf("%d\t%d\n", i,j);
return 0;
}
拜托了。我就是想要个说法,哪条C标准或者哪本书上第几页有说过结构体操作符.和->后的变量不能用括号括起来。拜托各位了
P.S. 虽然是新人交流区,相信其中也一定有高手,谢谢!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!