我曾多次看到使用const
类型限定符来定义函数:
const int foo (int arg)
这有什么意义?函数的返回值无论如何都无法改变..
答案 0 :(得分:13)
在C中,它确实没用,编译器可能会发出相应的警告:
$ echo 'const int foo (int arg);' | clang -Weverything -fsyntax-only -xc -
<stdin>:1:1: warning: 'const' type qualifier on return type has no effect
[-Wignored-qualifiers]
const int foo (int arg);
^~~~~~
1 warning generated.
答案 1 :(得分:11)
根据C规范(C99,第6.7.3节):
与限定类型相关联的属性仅对作为左值的表达式有意义。
函数不是左值,因此它们的const
关键字没有意义。编译器会在编译期间忽略它们。