命名空间“cmb1”导致 C++编译错误
当我尝试编译此代码时:
#include <windows.h>
namespace cmb1 {
}
void main() {}
我得到以下信息:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
a.cc
a.cc(3) : error C2059: syntax error : 'constant'
a.cc(3) : error C2143: syntax error : missing ';' before '{'
a.cc(3) : error C2447: '{' : missing function header (old-style formal list?)
cmb2
、cmb3
和 cmb4
的情况同上。我在那一刻停了下来。 cm4
,顺便说一句,编译得很好。
我尝试用其他东西包围命名空间:
namespace dilum {
namespace cmb4 {
}
}
但编译仍然失败。
到底是怎么回事?
When I try to compile this code:
#include <windows.h>
namespace cmb1 {
}
void main() {}
I get this:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
a.cc
a.cc(3) : error C2059: syntax error : 'constant'
a.cc(3) : error C2143: syntax error : missing ';' before '{'
a.cc(3) : error C2447: '{' : missing function header (old-style formal list?)
Ditto for cmb2
, cmb3
and cmb4
. I stopped at that point. cm4
, btw, compiles just fine.
I tried surrounding the namespace with something else:
namespace dilum {
namespace cmb4 {
}
}
But the compile still failed.
What is going on?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
来自 windows.h:
from windows.h:
cmb1
可以是windows.h
中定义的宏。如果宏将自身扩展为表达式,编译器会看到cmb1
may be a macro defined inwindows.h
. If the macro expands itself to an expression, the compiler sees常量
cmb1
在
中定义如下:如果您使用的是 Visual Studio 2010,则可以将鼠标悬停在
cmb1 下的红色波浪箭头上
查看定义。不用说,
namespace 0x0470 { }
不是有效的命名空间声明。The constant
cmb1
is defined in<windows.h>
as follows:If you are using Visual Studio 2010, you can hover over the red squiggly arrow under
cmb1
to see the definition.Needless to say,
namespace 0x0470 { }
is not a valid namespace declaration.