如果在 C++ 或 C++/CLI 下以编程方式查找

Find programmatically if under C++ or C++/CLI

提问人:aybe 提问时间:4/2/2012 更新时间:4/2/2012 访问量:3496

问:

我希望我的 C++/CLI 标头即使在另一个平台下也能编译。当然,我并不期望编译它们,而是忽略它们。

这合适吗?(_MSC_VER)

#ifdef _MSC_VER

    using namespace System;

        namespace ENMFP {

            public ref struct Data {
            };
        }

#endif

谢谢!

编译 C++-CLI

评论


答:

17赞 Frédéric Hamidi 4/2/2012 #1

您可以使用此处记录的预定义宏:__cplusplus_cli

#ifdef __cplusplus_cli

using namespace System;

namespace ENMFP
{
    public ref struct Data
    {
        // ...
    };
}

#endif  // __cplusplus_cli

评论

0赞 aybe 4/2/2012
对不起,我说得太快了,它不起作用,但是_MANAGED有效。
0赞 Frédéric Hamidi 4/2/2012
@Aybe,这很奇怪,如果指定了选项,则应该定义两个宏。你有机会使用吗?在这种情况下,你的目标是托管C++,而不是 C++/CLI :)/clr/clr:oldSyntax
0赞 aybe 4/2/2012
它是 /clr,我认为它是 C++/CLI,因为我在 VS2010 上,但你会告诉我,实际上这是我在 C++ 中的第一个项目
0赞 Frédéric Hamidi 4/2/2012
/clr确实是 C++/CLI,但在这种情况下也应该定义......我无法解释为什么它不是(但是)在你的情况下。__cplusplus_cli_MANAGED
3赞 aybe 4/3/2012
好的,我现在明白了,它没有显示在 Intellisense 中,我也无法导航到它,但它存在,我用 #ifdef __cplusplus_cli #pragma message(“cli”) 检查了一下