在VC++.Net中,“Clr/Safe”(/clr:safe)和“Clr/Pure”(/clr:pure)是什么意思?
我认为这些信息还不够。从其他答案中看来,似乎只是类型检查。从this doc中可以看出,它远不止于此。
当使用
/clr
(而不是/clr:pure
或/clr:safe
)且未使用__clrcall
时,获取函数地址始终返回本机入口点函数的地址。当使用__clrcall
时,不会创建本机入口点函数,因此您将获得托管函数的地址,而不是入口点thunk函数的地址。有关更多信息,请参见Double Thunking。
/clr
(公共语言运行时编译)意味着所有函数和函数指针都是__clrcall
,编译器不允许将编译单元内的函数标记为除__clrcall
之外的任何内容。当使用/clr:pure时,__clrcall
仅可在函数指针和外部声明上指定。