我希望能够判断传递给函数、方法或类方法的数字参数是否来自硬编码数字。
例如呼唤
MyFunc(2);
或
int a = 1;
MyFunc(a);
应该重载函数以允许不同的实现或某种区分方式
void MyFunc(int num)
{
if (isHardcodedNumber(num))
doThis();
else
doThat();
}
这是一个简化版本。理想情况下,我需要一个采用模板参数并适用于任何内置数字类型的解决方案。
这可能吗?
最佳答案
你无法区分这两种情况。
您的函数只是从堆栈(或寄存器,取决于您的处理器)中获取传递给它的值。
它无法知道该值在被压入堆栈或复制到寄存器之前来自何处(当然,除非您传递一个额外的参数来指示所以)。
关于c++ - 如何判断参数何时来自硬编码数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206125/