【问题标题】:How to display a #defined constant during build, in Visual Studio 2010?在 Visual Studio 2010 中,如何在构建期间显示 #defined 常量?
【发布时间】:2012-02-24 04:12:41
【问题描述】:

我见过this,但没有一个答案适用于 VS2010。常量的(或者我应该称之为变量?)数值没有显示出来

这行代码#if OGRE_PLATFORM == OGRE_PLATFORM_LINUX 在我实际在 Windows 中编程时证明是正确的。我需要在构建过程中查看 OGRE_PLATFORM_WIN32 和 OGRE_PLATFORM_LINUX 的值。你能帮忙解决一下吗?

【问题讨论】:

    标签: visual-studio-2010 visual-c++ preprocessor


    【解决方案1】:

    您可以使用以下命令检查预处理器输出:

    • /E - 预处理为 stdout
    • /P - 预处理到文件或
    • /EP - 在没有 #line 指令的情况下预处理到 stdout

    Visual Studio 中的选项

    【讨论】:

    • VS 新手。我应该在项目属性的哪个位置包含 /E?我没有看到任何可以进入的地方。
    【解决方案2】:

    首先,检查项目选项中的预处理器定义 - 活动配置和所有配置,并确保定义了正确的内容。

    如果您仍然遇到问题,请尝试将其替换为您的主要方法:

    #include <iostream>
    
    int main()
    {
        #ifdef OGRE_PLATFORM_LINUX
        std::cout << "OGRE_PLATFORM_LINUX = " << OGRE_PLATFORM_LINUX << "\n";
        #else
        std::cout << "OGRE_PLATFORM_LINUX not defined.\n";
        #endif
    
        #ifdef OGRE_PLATFORM_WIN32
        std::cout << "OGRE_PLATFORM_WIN32 = " << OGRE_PLATFORM_WIN32 << "\n";
        #else
        std::cout << "OGRE_PLATFORM_WIN32 not defined.\n";
        #endif
    
        #ifdef OGRE_PLATFORM
        std::cout << "OGRE_PLATFORM = " << OGRE_PLATFORM << "\n";
        #else
        std::cout << "OGRE_PLATFORM not defined.\n";
        #endif
    
        return 0;
    }
    

    另外,您是否创建了该项目,它是由某种类型的预制(CMake、automake 等)系统创建的,您是从某个地方下载的吗?如果你没有创建它,那么有人可能已经移植了一些 Linux 代码而没有检查他们的预处理器选项。

    【讨论】:

    • 谢谢,但我不能使用 couts,因为程序还没有编译。我想在构建过程中输出。我刚刚发现 linux 条件和 windows 条件都评估为 true,因为所有这些常量都还没有定义。标头包含过程有问题。我的问题仍然存在,关于如何在构建期间输出这些常量的值?
    • 你能禁用所有其他文件,只编译我给你的代码吗?这至少会告诉你这些选项是否正确。
    • 选项是对的。问题是如何在构建过程中显示这些宏中包含的数值?
    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 2014-02-11
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多