首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为了清楚起见,应该在返回类型上使用无用的类型限定符吗?

为了清楚起见,应该在返回类型上使用无用的类型限定符吗?
EN

Stack Overflow用户
提问于 2009-10-16 17:47:37
回答 5查看 6.6K关注 0票数 12

当我们在头文件中有原型时,我们的静态分析工具会抱怨“返回类型上的无用类型限定符”,例如:

代码语言:javascript
复制
const int foo();

我们这样定义它是因为函数返回一个永远不会改变的常量,认为有了const,应用编程接口似乎更清晰。

为了清晰起见,我觉得这类似于显式地将全局变量初始化为零,即使C标准已经声明,如果不显式初始化,所有全局变量都将被初始化为零。说到底,这真的无关紧要。(但静态分析工具不会抱怨这一点。)

我的问题是,有没有理由这样做会导致问题?我们应该忽略工具产生的错误,还是应该以不太清晰和一致的API为代价安抚工具?(它返回该工具没有问题的其他const char*常量。)

EN

Stack Overflow用户

发布于 2009-10-16 18:04:07

const int foo()const char* foo()非常不同。const char* foo()返回一个数组(通常是一个字符串),该数组的内容不允许更改。想一想它们之间的区别:

代码语言:javascript
复制
 const char* a = "Hello World";

代码语言:javascript
复制
const int b = 1;

a仍然是一个变量,可以赋值给其他不能改变的字符串,而b不是一个变量。所以

代码语言:javascript
复制
const char* foo();
const char* a = "Hello World\n";
a = foo();

是允许的,但是

代码语言:javascript
复制
const int bar();
const int b = 0;
b = bar();

是不允许的,即使使用bar()const声明也是如此。

票数 3
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1579435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档