如何将 int 传递给期望 const int 的函数。
或者有没有办法修改cont int值?
编辑:我之前应该提到过,我正在使用用于编程pic微控制器的ccs c编译器。 fprintf函数将常量流作为其第一个参数。它只接受一个常量int并抛出一个编译错误,否则“Stream必须是有效范围内的常量。”。
编辑2:Stream是一个常量字节。
答案 0 :(得分:9)
完全忽略函数参数列表中的顶级const
,所以
void foo(const int n);
与
完全相同void foo(int n);
所以,你只需传递一个int
。
唯一的区别在于函数定义,其中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.
}
答案 1 :(得分:4)
这不需要愚弄。期望类型为const int
的参数的函数将很乐意接受int
类型的参数。
以下代码可以正常使用:
void MyFunction(const int value);
int foo = 5;
MyFunction(foo);
因为参数是按值传递 ,所以const
实际上毫无意义。唯一的作用是确保不修改函数的变量的本地副本。无论参数是否被视为const
,传递给函数的变量都将从不被修改。