Как отобразить константу #defined во время сборки в Visual Studio 2010? - PullRequest
1 голос
/ 24 февраля 2012

Я видел это , но ни один из ответов не сработал для VS2010. Числовое значение константы (или я должен называть это переменной?) Не отображалось

Эта строка кода #if OGRE_PLATFORM == OGRE_PLATFORM_LINUX оказывается верной, когда я на самом деле программирую в Windows. Мне нужно увидеть значения OGRE_PLATFORM_WIN32 и OGRE_PLATFORM_LINUX во время самого процесса сборки. Не могли бы вы помочь с этим?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Вы можете проверить выход препроцессора, используя:

  • / E - предварительная обработка до stdout или
  • / P - предварительная обработка в файл или
  • / EP - предварительная обработка до stdout без #line директив

опций в визуальной студии

0 голосов
/ 24 февраля 2012

Сначала проверьте, что препроцессор определяет в опциях проекта - активная конфигурация и все конфигурации, и убедитесь, что все правильно определено.

Если у вас все еще есть проблемы, попробуйте заменить это для вашего основного метода:

#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, не проверив параметры препроцессора.

...