我用的是vc6.0的单文档,在doc这个类里面,我定义了一个函数,部分代码如下:
if (streq(extension,"sat")) 
{
#define SATLU  1
AfxMessageBox("SAT");
}
else if (streq(extension,"hsf"))
{
#define HSFLU  1
AfxMessageBox("HSF");
}
根据满足的情况,定义了不同的宏,然后我在这个类里面另外的一个函数,定义了一个条件编译:
#ifdef HSFLU
AfxMessageBox("HSF文件");
#endif
#ifdef SATLU
AfxMessageBox("ACIS文件");
#endif
可是不知道什么原因,现在我发现我定义的宏根本没有起到作用,这两个MessageBox总是出来,请各位大侠帮小弟看看,我实在是没有则了。

解决方案 »

  1.   

    你的预编译选项没有设置你的宏吧
    setting/c++/pre..def
    找找看
      

  2.   

    条件编译不适用你的这种情况。
    条件编译比如:
    我这段代码可以运行在 Windows 和 Linux 上。
    但是需要编译两个可运行的程序。
    那么此时需要使用条件编译。
    在不同时候使用不同的源代码。
    而没有被编译的代码就和删除了是一样的。而你的这种情况是,在编译时条件的真假代码都是需要的。
    所以不适用条件编译。