-3

我是 C++ 新手,遇到了奇怪的问题。我有一个#define in common.h

 #define TEXT_VALUE "Alpha"

在 program.cpp 内部的一个方法中,我想访问它并想做如下的事情

 #include common.h

 void TestProgram::TestProgram(){
   std::string test_value = TEXT_VALUE;

   if(test_value.empty()) {//check during compile time if not set then set to default
      test_value = "Beta";
   }
 }

但是 test_value 在生成的可执行文件中始终设置为“Beta”...即使 common.h 具有#define...。

如果上述方法不正确……还有其他选择吗?

该代码在 MAC 上运行良好,但在我使用 Visual Studio 2005 的 Windows 上运行良好(无法升级:-()

4

2 回答 2

2

要在编译时检查,请使用预处理器进行测试;)

    //common.h
    #define TEXT_VALUE "Alpha"
    //...

    //somwhere
    #ifdef TEXT_VALUE
    std::string test_value = TEXT_VALUE;
    #else
    std::string test_value = "Beta";
    #endif
于 2013-08-12T11:53:23.313 回答
0
#include <iostream>
#include "common.h"
std::string test_value = TEXT_VALUE;
using namespace std;
int main(int argc, char const *argv[])
{
    if(test_value.empty()) 
    {//check during compile time if not set then set to default
           test_value = "Beta";
    }
    cout<<test_value;
    return 0;
}

上面的代码对我有用。

于 2013-08-12T11:45:16.953 回答