我有一些C代码,我只是在经过艰苦的努力在Excel中手动执行后验证我的可执行文件通过 var table1 = $('#accledger-table1').DataTable({
"sDom": '<"row view-filter"<"col-sm-12"<"pull-left"l><"pull-right"f><"clearfix">>>t<"row view-pager"<"col-sm-12"<"text-center"ip>>>',
columns: [
{ data: "1" },
{ data: "2", },
{ data: "3" },
{ data: "4" },
{ data: "5" },
{ data: "6" },
{ data: "7" },
{ data: "8" },
{ data: "9" },
{ data: "10" },
{ data: "11" },
{ data: "12" },
{ data: "13" }
],
destroy: true,
sort: false,
});
table1.clear().draw();
for (var i = 0; i <= RetObject.ACC_LEDGER.length - 1; i++) {
var ledger = RetObject.ACC_LEDGER[i];
table1.rows.add([{
"1": ledger.1,
"2": ledger.2,
"3": ledger.3,
"4": ledger.4,
"5": ledger.5,
"6": ledger.6,
"7": numberWithCommas(ledger.7),
"8": numberWithCommas(ledger.8),
"9": numberWithCommas(ledger.9),
"10": numberWithCommas(ledger.10),
"11": numberWithCommas(ledger.11),
"12": numberWithCommas(ledger.12),
"13": ledger.REMARKS,
}]).draw(false);
}
编译正确运行但如果我使用gcc -O0
编译我的输出是坏的。
可能是什么原因引起的? 到目前为止,我已经将问题追溯到它读取数据的位置, 这是因为它读取的输入文件总数,我读到的每一行数据(文本文件中的数字)都会立即打印到标准输出并重定向到名为O0.txt或O2.txt的文件中。如果我比较这些文件,当我希望看到完全相同时,我会发现数字存在显着差异。
这是gcc-4.3.4 suse linux
这是代码的代码段,用于显示与-O2无关的内容,但它可以根据-O2
与-O0一起使用,并将输出重定向到{{1} }或printf
O0.txt
答案 0 :(得分:0)
我在读取例程中发现了错误,这不是编译器问题。
虽然出于某种原因,问题并未表现为使用2
3
3
3
.
.
.
上的1
2
3
4
5
或之后的任何内容进行编译。
以上代码代码段甚至已经更正,必须具有隧道视野, 原始源代码中的问题是
-O2
没有使用gcc-4.8.5
选项使用/* here was the problem in original code */
for ( r = 0; r < r; r++ ) /* skip past header */
fgets( line, LS, fp );
跳过标题,但可以使用gcc_4.3.4
或-O2
-O0
我在使用-O1
-O2- did allow the program to read in all the data from the file correctly
and the program ran correctly when compiling with
gcc-4.8 {sles 11.4 installed by novell update}
gcc-5 {sles 11.4 installed by novell update}
gcc-4.8.5 {native in sles 12.3}
gcc 7.x as of 2018-02-20 manually built from source
编译的sles 11.4中运行了原始代码