const keyword before a function in C
我想知道"c"中的函数之前的"const"关键字的作用。
例如:
1 | extern const int func1(int x[], const struct dummy_s* dummy) |
提前谢谢
如果打开警告,将有两个:
1 2 | warning: type specifier missing, defaults to 'int' [-Wimplicit-int] warning: 'const' type qualifier on return type has no effect [-Wignored-qualifiers] |
这很容易让你得出这样的结论:
1 | extern const func1(int x[], const struct dummy_s* dummy) |
基本相同:
1 | extern int func1(int x[], const struct dummy_s* dummy) |
在标准C中,代码不会编译。不允许省略C函数的返回类型。
在旧的、过时的C版本(称为C90)中,允许您省略返回类型,在这种情况下,它将默认为int。在旧版本的C中,您的代码将等于:
1 | extern const int func1(int x[], const struct dummy_s* dummy); |
接下来的问题是,从函数返回
它没有任何意义。当C允许隐式返回类型int(如果没有显式指定返回类型)时,似乎是一些旧代码有效。但在任何情况下,返回值都不是左值,不能更改。所以常量限定符是多余的。