我想知道在调用函数时用户是否有任何优势
A)void func(int i);
或类似的功能
B)void func(const int i);
在func内部,参数i无论如何都将被复制到堆栈(或编译器在其优化中选择的位置),对于调用此函数的用户,A和B之间没有区别.
所以如果一个工具类似于:
A)
void func(int i)
{
i = another_func(i);
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
或者使用const
B)
void func(const int i)
{
int j = another_func(i);
printf("%d", j);
}
Run Code Online (Sandbox Code Playgroud)
我的问题 :
实施B有什么优势?编译器可以执行任何类型的优化?A和B只是一个简单的例子,这些问题对其他情况有效.
我理解在指针中使用const的优点(例如const void*data),因为我们告诉用户我们不会修改它的内容,但我不理解const的用法,除了警告函数的程序员他不应该修改它,但在我看来,在API头文件中使用const是没用的.
谢谢你的帮助.
这里的一些人说const如果不改变变量就应该写- 因为你可以声明任何局部变量const.(主要目标是让您不会意外地更改变量,但也可以帮助编译器优化您的代码)
其他人说你不应该声明函数参数const,因为它会暴露API中的一些实现.
我认为他们都是对的!这就是为什么你可以省略constin函数声明:你可以写void func(int);一个标题,但void func(const int i) {}在代码文件中实现它.
| 归档时间: |
|
| 查看次数: |
2145 次 |
| 最近记录: |