为什么我不能在VC ++ 2008中编译/运行这个非CLR程序?
怎么做?
#include <iostream>
namespace System
{
public class Console
{
public:
static void WriteLine(char str[])
{
std::cout<<str;
}
};
}
int main()
{
System::Console::WriteLine("This a non-CLR program!");
}
Error 1 error C3381:
'System::Console' : assembly access specifiers are only
available in code compiled with a /clr option
e:\...\MyProgram.cpp 6
答案 0 :(得分:11)
这不是非CLR C ++程序。在适当的C ++中,类不能是公共的(或私有的)。你想要:
namespace System
{
class Console
{
public:
static void WriteLine(char str[])
{
std::cout<<str;
}
};
}
同样在C ++中,字符文字是const,所以你的函数应该是:
static void WriteLine( const char * str)
如果你想用一个作为参数调用它。
答案 1 :(得分:4)
删除public关键字。 Link:
当应用于托管类型(例如类或结构)时,public和private关键字指示是否将通过程序集元数据公开该类。 public和private不能应用于非托管类。
答案 2 :(得分:1)
namespace System
{
public class Console // this line is causing the error
.....
}
标准C ++中的类不能在命名空间内/外公开(或私有或受保护)。
将public class Console
更改为class Console