#include<iostream.h>
#define ADD   \
void AddNum() \
{                       
cout<<"hello"<<endl;   \    
} \void acc()
{
//int c;
ADD;
//return 1;
}
int main()
{
acc();
return 1;
}

解决方案 »

  1.   

    这样当然使不行的,这相当于你在acc函数里面又定义了一个函数,你智能这样:
    #include<iostream.h>
    #define ADD   AddNum()
    //或者就直接定义
    #define ADD cout<<"hello"<<endl;
    void AddNum() 
    {                       
    cout<<"hello"<<endl;       
    } void acc()
    {
    //int c;
    ADD;
    //return 1;
    }
    int main()
    {
    acc();
    return 1;
    }
      

  2.   

    可是在MFC里有许多宏定义就是用我的方式比如你看看#define DECLARE_DYNAMIC(class_name)  \    
    public:\    
    static CRuntimeClass class##class_name;\    
    virtual CRuntimeClass *GetRuntimeClass() const;\    然后在类里就可以用DECLARE_DYNAMIC宏声明,就相当于在类里声明了上面的
    两个函数,我是想怎做成这样的。
      

  3.   

    我知道了下面的代码就可以
    #include<iostream.h>
    #define ADD(a,b)   \
     public: \
    int Add(int a,int b);   \  //注意斜线不能去掉,却最后一行没有
    void Add2();
    class aa
    {
    int c;public:
    ADD(a,b)};
    int main()
    {
    aa a;
    int c;
    c=a.Add(1000,1);
    a.Add2();
    cout<<c<<endl;
    return 1;
    }
    int aa::Add(int a,int b) 
    {return (a+b);}  
    void aa::Add2()
    {cout<<"hello2"<<endl;}
      

  4.   

    所以啊,你只在定义的时候使用了AAD(a,b)宏来定义几个函数的声明,在执行代码里是不能这样用的。你可以看到你在执行代码里根本没有直接用到ADD,其实 sxxny(柳水) 说得很清楚了,宏就是简单的代换。