我有一个调试宏,我给它一个浮点引用,并希望它有时会修改该变量,如果可以的话。
#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有没有办法做到这一点?
发布于 2019-12-02 03:30:39
实现两个重载函数。
void implProbe(const char * loc, float & x){
...
x = 4.f;
}
void implProbe(const char * loc, const float & x){
...
}https://stackoverflow.com/questions/59129070
复制相似问题