C语言中“|”符号的问题

LichY 2012-08-29 03:29:25
程序开头有这样的定义:
/*the fixed colors*/
#define BLACK 0
#define YELLOW(RED | GREEN)
#define MAGENTA(RED | BLUE)
#define CYAN(GREEN | BLUE)
#define WHITE(RED | GREEN | BLUE)
运行的时候提示错误是这样的:
test.c
C:\Documents and Settings\Administrator\test.c(15) : error C2010: '|' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(15) : error C2010: 'G' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(16) : error C2010: '|' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(16) : error C2010: 'B' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(17) : error C2010: '|' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(17) : error C2010: 'B' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(18) : error C2010: '|' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(18) : error C2010: 'G' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(18) : error C2010: '|' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(18) : error C2010: 'B' : unexpected in macro formal parameter list
C:\Documents and Settings\Administrator\test.c(35) : error C2065: 'YELLOW' : undeclared identifier
C:\Documents and Settings\Administrator\test.c(41) : error C2065: 'WHITE' : undeclared identifier
C:\Documents and Settings\Administrator\test.c(42) : error C2065: 'MAGENTA' : undeclared identifier
执行 cl.exe 时出错.

请问大家这个是什么问题?我用的是VC++6.0编译环境!谢谢!
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LichY 2012-08-29
  • 打赏
  • 举报
回复
谢谢各位,问题已经了,以后多多学习,认真细心!
ohayou 2012-08-29
  • 打赏
  • 举报
回复
楼上正解
#define macro如果紧接着括号会把括号里的内容当作这个宏的参数
mymtom 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

C/C++ code

/*the fixed colors*/
#define BLACK 0
#define YELLOW (RED | GREEN)
#define MAGENTA (RED | BLUE)
#define CYAN (GREEN | BLUE)
#define WHITE (RED | GREEN | BLUE)
[/Quote]

楼主漏掉了左括号("(")左边的空格或者制表符
兆帅 2012-08-29
  • 打赏
  • 举报
回复

/*the fixed colors*/
#define BLACK 0
#define YELLOW (RED | GREEN)
#define MAGENTA (RED | BLUE)
#define CYAN (GREEN | BLUE)
#define WHITE (RED | GREEN | BLUE)


smartsecuri 2012-08-29
  • 打赏
  • 举报
回复
YELLOW,MAGENTA,CYAN,WHITE后面各加一个空格。
aozhi 2012-08-29
  • 打赏
  • 举报
回复
查查是不是有全角字符了?
一律改成半角。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧