我如何使用此调试宏?

时间:2013-09-30 15:20:37

标签: c++ macros

using namespace std;
#ifdef DEBUG
     #define debug(args...)            {dbg,args; cerr<<endl;}
#else
     #define debug(args...)              // Just strip off all debug tokens
#endif

struct debugger
{
    template<typename T> debugger& operator , (const T& v)
    {    
        cerr<<v<<" ";    
        return *this;    
    }
} dbg;


int main(){
    int a=1,b=2,c=3;
    debugger(a,b,c);
}

我找到了这个调试宏,我试图使用它,但这不起作用。我收到了以下错误:

ubuntu:~ g++ -DEBUG a.cpp -o a
a.cpp: In function ‘int main()’:
a.cpp:81:16: error: no matching function for call to ‘debugger::debugger(int&, int&, int&)’
a.cpp:81:16: note: candidates are:
a.cpp:62:8: note: debugger::debugger()
a.cpp:62:8: note:   candidate expects 0 arguments, 3 provided
a.cpp:62:8: note: debugger::debugger(const debugger&)
a.cpp:62:8: note:   candidate expects 1 argument, 3 provided

1 个答案:

答案 0 :(得分:5)

您可以尝试使用: -

debug(a, b, c);

此外,您还必须更改命令行-DDEBUG -- the -D is "define"。目前,您正在定义"EBUG"