2012-02-24 65 views
1

我見過this,但沒有任何答案適用於VS2010。常數的(或應該我稱之爲變量?)數值沒有得到顯示如何在構建期間在Visual Studio 2010中顯示#defined常量?

這行代碼#if OGRE_PLATFORM == OGRE_PLATFORM_LINUX是事實證明,當我實際上編程在Windows中。我需要在構建過程中看到OGRE_PLATFORM_WIN32和OGRE_PLATFORM_LINUX的值。你能幫忙解決這個問題嗎?

回答

1

可以使用檢查預處理器輸出:

  • /E - 預處理到stdout
  • /P - 預處理到文件或
  • - 預處理到stdout沒有#line指令

選項在Visual Studio

+0

新的VS.在項目屬性中應該包含/ E?我沒有看到任何可以輸入的地方。 – Nav 2012-02-24 07:47:56

0

首先,檢查預處理項目選項定義 - 積極配置和所有的配置,並確保正確的事情的定義。

如果您仍然有問題,爭取你的主要方法代替這個:

#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代碼而不檢查它們的預處理器選項。

+0

謝謝,但我無法使用cout,因爲該程序尚未編譯。我想在構建過程中輸出。我剛剛發現linux條件和windows條件都評估爲true,因爲所有這些常量尚未定義。標題包含過程有些問題。我的問題仍然存在,至於如何在構建時輸出這些常量的值? – Nav 2012-02-24 06:50:12

+0

你可以禁用所有其他文件,只編譯我給你的代碼嗎?這至少會告訴你這些選擇是否正確。 – parkovski 2012-02-24 21:25:37

+0

選項是正確的。問題是如何在構建過程中顯示這些宏中包含的數值? – Nav 2012-02-27 07:45:50