我有以下代码:
#include <iostream>
using namespace std;
Sum (int a, int b)
{
int x = a - b;
//cout << x << " \n";
return x;
}
int main()
{
int s1 = Sum(3, 6);
cout << s1;
return 0;
}
系统信息: Win 7 Sp1 x64 Ultimate / Professional或Win 8.1 x64 代码块16.01 MinGW 调试器名称和版本:GNU gdb(GDB)7.6.1 编译器:GNU GCC编译器
此代码编译没有问题,但这是问题,应该有错误。
1)函数Sum,没有返回值,在http://cpp.sh/它不会因为这个而让我编译。
2)变量的s1值是-3,无论我写&#34;返回x&#34;或不。
如果我取消注释&#34; x
&#34;之上的cout
语句,它会以某种方式每次都传递return x
的值。一切都开始如预期的那样,什么地狱:) - &gt;如果没有返回语句(因为它在用于函数调用之前未初始化),s1
将具有随机值,而当return
存在时,<div class="row">
<div class="col-sm-6">
<div class="input-group">
<textarea v-model="notes" maxlength="1000" class="form-control" row="2" :disabled="laptop.scrapped !== 0">
</textarea>
<div class="clear"></div>
<button class="btn btn-default input-group-addon" :disabled="!notes">Save</button>
</div>
</div>
<div class="col-sm-2">
</div>
<div class="col-sm-4 text-right button">
<button class="btn btn-primary">Return</button>
<button class="btn">Select and Return</button>
</div>
将具有随机值。
我已在3台独立的计算机上尝试过此操作,但它们都表现出相同的行为。所以我不认为机器是问题所在。 我也试过使用不同的编译器,但我不知道我是否正确配置它们并且他们没有调试器吗?我尝试了 Borland c ++ 和 Digital Mars 。 Borland 有一个新版本10.1而不是代码块支持的5.5版本,我无法使新版本工作。 我甚至不知道这是编译器还是程序问题?
我试图学习C ++,这非常烦人。我们的老师在课堂上使用相同的软件,但在 Linux 上,它完美无缺。
偏离主题:有没有办法在这里插入包含行号的代码?首先发布在这里,所以我仍然是新的:)。
谢谢!
答案 0 :(得分:1)
转到“项目” - &gt; “构建选项” - &gt; “编译器设置”选项卡 - &gt; “编译器标志”
并停用-fpermissive
-fpermissive将有关不符合代码的一些诊断从错误降级为警告。因此,使用-fpermissive将允许一些 要编译的不合格代码。
或者在代码顶部使用pragma禁用它:
#pragma GCC diagnostic ignored "-fpermissive"
您也可以尝试在“编译器标志”选项卡中添加标记“-pedantic”
顺便说一句:
如果您尝试online:
#pragma GCC diagnostic error "-fpermissive"
using namespace std;
Sum (int a, int b)
{
int x = a - b;
//cout << x << " \n";
return x;
}
int main()
{
int s1 = Sum(3, 6);
cout << s1;
return 0;
}
你所描述的行为完全相同!
答案 1 :(得分:0)
正如Rama所说,你可能在你的代码块中启用了-fpermissive。 转到&#34; Project&#34; - &GT; &#34;构建选项&#34; - &GT; &#34;编译器设置&#34;标签 - &gt; &#34;其他选项&#34; 和删除-fpermissive。