函数返回值定义为常量

时间:2015-05-11 09:50:44

标签: c function const

我曾多次看到使用const类型限定符来定义函数:

const int foo (int arg)

这有什么意义?函数的返回值无论如何都无法改变..

2 个答案:

答案 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关键字没有意义。编译器会在编译期间忽略它们。

参考:Online C99 standard