相关疑难解决方法(0)

为什么这个C++片段编译(非void函数不返回值)

今天早上我在我的一个图书馆找到了这个:

static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out)
{
    tvec3::Min(a,b,out);
    out.w = min(a.w,b.w);
}
Run Code Online (Sandbox Code Playgroud)

我期望编译器错误,因为此方法不返回任何内容,并且返回类型不返回void.

想到的唯一两件事是

  • 在调用此方法的唯一位置,不使用或存储返回值.(此方法应该是void- tvec4返回类型是复制和粘贴错误)

  • tvec4正在创建一个默认构造,这看起来有点不同,哦,C++中的其他所有东西.

我还没有找到解决这个问题的C++规范部分.参考文献(ha)表示赞赏.

更新

某些情况下,这会在VS2012中生成错误.我没有缩小具体细节,但它仍然很有趣.

c++ methods c++11 visual-studio-2012

128
推荐指数
5
解决办法
1万
查看次数

C/C++编译器的最佳编译器警告级别?

您为不同的C/C++编译器推荐了什么编译器警告级别?

gcc和g ++会让你在默认级别上获得很多东西.我发现对我来说最好的警告级别是'-Wall'.我总是试图删除修复它生成的警告的代码.(即使是愚蠢的关于使用括号进行逻辑优先规则或者说我的意思是'if(x = y)')

对于不同的编译器,您最喜欢的级别是什么,例如Sun CC,aCC(HPUX?),Visual Studio,intel?

编辑:

我只想指出我在gcc/g ++上没有使用"-Werror"(但我确实理解它的实用性),因为我使用:

#warning "this is a note to myself"

在我的代码中的几个地方.所有编译器都了解#warning宏吗?

c c++ compiler-construction warnings

45
推荐指数
5
解决办法
3万
查看次数

C++为什么main工作没有返回值

这个问题出于好奇; 在为测试程序编写main时,我没有返回任何内容main(没有return声明main).但我宣称主要是int main().它编译成功.

如果有任何其他函数用int返回类型编写并且实际上没有返回int,我会得到一个错误

'函数名'必须返回值

那么为什么编译器不会为main功能抱怨相同?

c++

7
推荐指数
2
解决办法
2919
查看次数