报错error C2051: case expression not constant

shadowsland 2014-03-22 04:56:23
前面声明常量const UINT WM_DDBOXSHOW = ::RegisterWindowMessage(_T(" WM_DDBOX_SHOW "));

后面获取消息的时候使用case WM_DDBOXSHOW为什么会报错error C2051: case expression not constant

请大神指教。。。。

是编译器的问题?
...全文
441 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sololie 2014-03-22
  • 打赏
  • 举报
回复
错字 编译 器 常量 ---- > 编译 期 常量 //这里 WM_DDBOXSHOW 在编译时它的值是未知的,只有在运行时 RegisterWindowMessage 被执行并返回值时才被确定 const UINT WM_DDBOXSHOW = ::RegisterWindowMessage(_T(" WM_DDBOX_SHOW ")); // 你应该给定一个UINT 的字面量,这个字面量在编译器就已经确定下来 const UINT WM_DDBOXSHOW = 3453543;
sololie 2014-03-22
  • 打赏
  • 举报
回复
case 里需要的则必须是一个编译器常量(编译时就已经明确知道的值,例如给定一个UINT字面量),而你的WM_DDBOXSHOW 是通过函数返回值得到的(运行时动态得到的值)

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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