欺骗c++编译器。将 int 而不是 cont int 传递给函数

问题描述 投票:0回答:2

如何将 int 传递到需要 const int 的函数中。

或者有没有办法修改 cont int 值?

编辑:我应该早先提到这一点,我正在使用 ccs c 编译器,用于对 pic 微控制器进行编程。 fprintf 函数将 constant 流作为其第一个参数。它只会接受常量 int 并抛出编译错误,否则“Stream 必须是有效范围内的常量。”。

编辑2:流是一个常量字节。

c++ integer
2个回答
9
投票

函数参数列表中的顶级

const
完全被忽略,所以

void foo(const int n);

完全相同
void foo(int n);

所以,你只需通过一个

int

唯一的区别在于函数 definition,其中

n
在第一个示例中是
const
,而在第二个示例中是可变的。因此,这个特定的
const
可以被视为实现细节,应该在函数声明中避免。例如,这里我们不想修改函数内部的
n

void foo(int n); // function declaration. No const, it wouldn't matter and might give the wrong impression

void foo(const int n) 
{
  // implementation chooses not to modify n, the caller shouldn't care.
}

4
投票

这不需要愚弄。需要

const int
类型参数的函数将很乐意接受
int
类型参数。

以下代码可以正常工作:

void MyFunction(const int value);

int foo = 5;
MyFunction(foo);

因为参数是通过值传递的,所以const

实际上毫无意义。唯一的作用是确保函数的变量的本地副本不被修改。无论参数是否被视为 
const,传递给函数的变量将永远
不会被修改。

© www.soinside.com 2019 - 2024. All rights reserved.