各位高人,现在有这样一点小程序在VC下编译不过,请指教!#define MACRO_TEST(arg) MyTest(arg);
void CTest1Dlg::OnButton1() 
{
// TODO: Add your control notification handler code here
 MACRO_TEST((#if defined(_aaa_)

    #else 
         2
    #endif))
}void MyTest(int a)
{
...;
}
执行编译后的错误提示为:
error C2121: '#' : invalid character : possibly the result of a macro expansion
虽然可以改成
#if defined(_aaa_)
   MACRO_TEST(1)
#else
   MACRO_TEST(2)
#endif
就可以解决问题,但是我想知道有没有其他的解决办法,特别是不要把#if移到外面来。
先谢了!

解决方案 »

  1.   

    int i = 0;
    #if defined(_aaa_)
       i=1
    #else
       i=2
    #endifMACRO_TEST(i);
      

  2.   

    MACRO_TEST(
    #if defined(_aaa_)
    1
    #else
    2
    #endif
    )
      

  3.   

    #要是第一个字符,空格Tab除外MACRO_TEST(
    (
    #if defined(_aaa_)

        #else 
             2
        #endif
    )
    )
      

  4.   

    靠,你自己定义的啊,#define MACRO_TEST(arg) MyTest(arg);
    当函数使用就可以了。
      

  5.   

    楼上的可以
    #要是第一个字符,空格Tab除外
      

  6.   

    我刚才照flyelf,truewill说的试了一下,还是编不过,一样的错误,两位能否提供一段在你们的机器上能编译过的代码,我的Email:[email protected]. 多谢!