我有一个调试宏,在其中给了它一个浮点引用,并希望它有时可以修改该变量。

#define probe(x) implProbe(#x##GETLINE, (x))

void implProbe(const char * loc, float & x){
    // this signature is a place holder
    ...
    x = 4.f;
}


但是,我还想对临时变量或文字(例如probe(1 + 2)probe(x + y))使用相同的宏。在这种情况下,宏不需要具有相同的效果,我不希望看到它的输出,我只希望它不中断。

float var = 0.f;
probe(var);
// var == 4.f

var = 0.f;
probe(var + 2.f);  // this should be legal
// var == 0.f (didn't change)

probe(1.f); // this should be legal


有没有办法做到这一点?

最佳答案

实现两个重载函数。

void implProbe(const char * loc, float & x){
    ...
    x = 4.f;
}
void implProbe(const char * loc, const float & x){
    ...
}

10-04 13:24