【发布时间】:2013-06-16 12:01:04
【问题描述】:
我想知道在调用类似函数时是否对用户有任何好处
A) void func(int i);
或类似的函数
B) void func(const int i);
在函数内部,参数 i 无论如何都会被复制到堆栈(或编译器在其优化中选择的任何位置),对于调用此函数的用户而言,A 和 B 之间没有区别。
所以如果实现类似的东西:
A)
void func(int i)
{
i = another_func(i);
printf("%d", i);
}
或者使用常量
B)
void func(const int i)
{
int j = another_func(i);
printf("%d", j);
}
我的问题:
实施 B 有什么优势吗?编译器可以执行任何类型的优化? A 和 B 只是一个简单的例子,这些问题对其他情况也有效。
我理解在指针中使用 const 的好处(例如 const void *data),因为我们告诉用户我们不会修改它的内容,但除了警告程序员之外,我不明白 const 的用法他不应该修改它的功能,但在我看来,在 API 头文件中使用 const 是没用的。
感谢您的帮助。
【问题讨论】: