如何接受可修改和不可修改的参数?
How to accept both modifiable and non-modifiable arguments?
我有一个调试宏,我给它一个浮点引用,并期望它有时会修改该变量,如果可以的话。
#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){
...
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 修改函数中的指针(将另一个指针作为参数传递)
- 如果返回 -1,时间() 的参数是否被修改?
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- 通过非常量引用参数修改常量引用参数
- 如何在使用 Qt5 构造函数时将非常量参数修改为常量参数?
- 如何接受可修改和不可修改的参数?
- 为什么我应该在scanf()-家族成员中包含一个长度修饰符作为参数?有什么好处?使用长度修改器进行扫描的作用
- 将参数从C/C++JNI传递给Java,得到修改后的值
- 如何修改此函数,以便如果函数的参数是特定结构,则返回具有较大整数的结构?
- 通过运算符使用标量参数重写来修改类成员
- 修改"参数视图属性"面板 (5.7.0) 上的默认属性
- 为什么 QObject::d isconnect(const QMetaObject::Connection &connection) 采用 const 参数并打算修改它?
- 非类型引用参数可以在运行时修改,这是否意味着模板可以在运行时实例化?
- 修改嵌套 lambda 中捕获的参数:gcc 与 clang?
- accept(..) 似乎正在修改我给它的文件描述符参数
- 修改参数而不引用
- 如何确保作为模板参数传递的函数类型不会修改参数
- 修改参数和/或返回新实例的方法/函数的命名约定
- 如何创建一个可以修改参数的函数对象