由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 被苹果给惊呆了!! (转载)
相关主题
问一个volatile和memcpy一起用的问题c++什么编译器好使?
Mavericks 9.2 and clang 5.1发个初级面试题
专业c++程序员都用什么ide (转载)Help: undefined symbol
牛人们来看看这个Dao语言怎么样面试被问到G++和GCC编译器的关系
C++11 support is now feature-complete in clang.陈皓:关于开源和闭源软件我个人Naive的看法(转载)
C++ 11问题:emplace_back()haskell 好像还不支持arm 64吧。
感觉python的前途堪忧 (转载)strict aliasing是否真的如linus说的那么不堪?
C++问题: 指针变量是哪里产生的?mac升级到capitan, python ssl不好使了
相关话题的讨论汇总
话题: undefined话题: gnu话题: apple话题: gcc话题: clang
进入Programming版参与讨论
1 (共1页)
e*********6
发帖数: 3453
1
【 以下文字转载自 Apple 讨论区 】
发信人: ericzhang86 (eric), 信区: Apple
标 题: 被苹果给惊呆了!!
发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
int main(){
vector a(10, 5);
a[11] = 100;
}
这个程序,苹果自带编译器居然给不出正确的结果来。
应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。
真是给苹果跪了。
f*******t
发帖数: 7549
2
如何吐槽?
楼主还是用java吧,c艹不适合你

【在 e*********6 的大作中提到】
: 【 以下文字转载自 Apple 讨论区 】
: 发信人: ericzhang86 (eric), 信区: Apple
: 标 题: 被苹果给惊呆了!!
: 发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
: int main(){
: vector a(10, 5);
: a[11] = 100;
: }
: 这个程序,苹果自带编译器居然给不出正确的结果来。
: 应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。

N***m
发帖数: 4460
3
It is undefined behavior (say, in non-debug mode) , so Apple g++ is not
wrong in this sense.

【在 e*********6 的大作中提到】
: 【 以下文字转载自 Apple 讨论区 】
: 发信人: ericzhang86 (eric), 信区: Apple
: 标 题: 被苹果给惊呆了!!
: 发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
: int main(){
: vector a(10, 5);
: a[11] = 100;
: }
: 这个程序,苹果自带编译器居然给不出正确的结果来。
: 应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。

e*********6
发帖数: 3453
4
如果我想Mac下的g++和linux下的有同样的性质,应该怎么改flag?

【在 N***m 的大作中提到】
: It is undefined behavior (say, in non-debug mode) , so Apple g++ is not
: wrong in this sense.

t***t
发帖数: 6066
5
果子软工很烂的
这两年都出多少事了
e*********6
发帖数: 3453
6
为何,这里很明显,linux是好的,mac的不好,因为改了不属于这个vector的地址

【在 f*******t 的大作中提到】
: 如何吐槽?
: 楼主还是用java吧,c艹不适合你

e*********6
发帖数: 3453
7
请明示。
这里边肯定库和定义不一样,但是Mac用了g++的命令却给出不一样的结果,很奇怪

【在 f*******t 的大作中提到】
: 如何吐槽?
: 楼主还是用java吧,c艹不适合你

C********n
发帖数: 150
T******7
发帖数: 1419
9
try to understand what is undefined behavior.
e*********6
发帖数: 3453
10
谢谢。
这算是个undefined的behavior,相当于法律没有规定,但是GNU g++已经有实践了,相
当于其他法院已经有了判例,为什么苹果不遵守呢

【在 T******7 的大作中提到】
: try to understand what is undefined behavior.
相关主题
C++ 11问题:emplace_back()c++什么编译器好使?
感觉python的前途堪忧 (转载)发个初级面试题
C++问题: 指针变量是哪里产生的?Help: undefined symbol
进入Programming版参与讨论
e*********6
发帖数: 3453
11
谢谢推荐.
我所诧异的是【】的操作,尽管是undefined,但是为了后来的苹果不跟着前边的GNU一
样走呢

【在 C********n 的大作中提到】
: http://stackoverflow.com/questions/3056597/are-vectors-more-rig
f*******t
发帖数: 7549
12
GNU怎么做跟apple有什么关系?为什么apple一定要follow?
e*********6
发帖数: 3453
13
gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
立山头当大哥,所以才说被苹果惊呆了

【在 f*******t 的大作中提到】
: GNU怎么做跟apple有什么关系?为什么apple一定要follow?
f*******t
发帖数: 7549
14
行业标准是undefined。另外apple我行我素多年了,有什么好纠结的?

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

e*********6
发帖数: 3453
15
这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
处理,唯独苹果是直接走

【在 f*******t 的大作中提到】
: 行业标准是undefined。另外apple我行我素多年了,有什么好纠结的?
g*****g
发帖数: 34805
16
Undefined就是undefined,写了undefined出了bug 都是骂程序员,没有骂编译器的。
这就如绿灯过马路不看路可以,红灯右转你也不看,撞死活该。

sign

【在 e*********6 的大作中提到】
: 这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
: 处理,唯独苹果是直接走

c***r
发帖数: 4631
17
装个gcc不就得了。

【在 e*********6 的大作中提到】
: 如果我想Mac下的g++和linux下的有同样的性质,应该怎么改flag?
l*****z
发帖数: 3022
18
果家自己是用clang+llvm 不用gcc 或 g++

【在 e*********6 的大作中提到】
: 这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
: 处理,唯独苹果是直接走

e*********6
发帖数: 3453
19
他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu

【在 l*****z 的大作中提到】
: 果家自己是用clang+llvm 不用gcc 或 g++
h******n
发帖数: 2795
20
其实,Apple C(C++)编译器跟GNU GCC几乎是一样的。
你这段代码,很可能在Linux下也能通过。但在,MS Visual Studio C++上就通不过。
我前几天遇到很类似的代码(是别人写的),其中的一个subroutine,在一个特例情况
下(i=0),给开的1D数组大小是0,但程序默认给a[0]赋值。这个程序在RHEL 6.7下成
功运行。但是,我搬到Windows下来,则运行出错。通过debug,发现此处出错。

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
相关主题
面试被问到G++和GCC编译器的关系strict aliasing是否真的如linus说的那么不堪?
陈皓:关于开源和闭源软件我个人Naive的看法(转载)mac升级到capitan, python ssl不好使了
haskell 好像还不支持arm 64吧。A link issue in Android build
进入Programming版参与讨论
i*****r
发帖数: 265
21
又不是java,为啥要报错。segfault或者过了都可以。
b***i
发帖数: 3043
22
这个应该和操作系统对内存的保护有关,和g++无关
用at可以查边界

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
y*j
发帖数: 3139
23
C++的原则是allow shooting his own foot. 这里gcc的处理是不符合标准的,
[在 ericzhang86 (eric) 的大作中提到:]
:【 以下文字转载自 Apple 讨论区 】
:发信人: ericzhang86 (eric), 信区: Apple
:...........
d****i
发帖数: 4809
24
这个不能怪Apple,C++的标准对于vector的operator[],如果越界的话,就是
undefined behavior。看一下C++的manpage:
http://www.cplusplus.com/reference/vector/vector/operator%5B%5D
Portable programs should never call this function with an argument n that is
out of range, since this causes undefined behavior.
在Linux下就会seg fault, 而在OS X下,苹果就仁慈的给了个垃圾数值的结果,只能说
苹果的implementation太委婉了一点。

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
d****i
发帖数: 4809
25
很好奇如果用Mac OS X下的Clang编译后运行的结果是怎样的?哪个装了Clang编译器的
来说说?
f*****r
发帖数: 754
26
选择不同的dialect就会有不同的结果

【在 e*********6 的大作中提到】
: 谢谢。
: 这算是个undefined的behavior,相当于法律没有规定,但是GNU g++已经有实践了,相
: 当于其他法院已经有了判例,为什么苹果不遵守呢

d********g
发帖数: 10550
27
Clang/LLVM才是趋势吧。本来BSD系的就不怎么鸟GNU/Linux,FreeBSD不久前也全线抛
弃GCC了
OS X:
$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx
-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
Thread model: posix
FreeBSD:
$ clang --version
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: x86_64-unknown-freebsd10.2
Thread model: posix
GPL不是啥灵丹妙药,open source也并非GNU的天下

【在 e*********6 的大作中提到】
: 【 以下文字转载自 Apple 讨论区 】
: 发信人: ericzhang86 (eric), 信区: Apple
: 标 题: 被苹果给惊呆了!!
: 发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
: int main(){
: vector a(10, 5);
: a[11] = 100;
: }
: 这个程序,苹果自带编译器居然给不出正确的结果来。
: 应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。

d********g
发帖数: 10550
28
GNU不是啥行业标准,Linux才是BSD的小弟,Clang/LLVM相比GCC是长江后浪推前浪。
GCC爱怎么玩是它自己的事,就好像MS、Intel的编译器也一直夹带私货

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

k***0
发帖数: 1381
29
井底之蛙,c++这块gnu算个鸟蛋行标,鬼才follow gnu呢

【在 e*********6 的大作中提到】
: 谢谢推荐.
: 我所诧异的是【】的操作,尽管是undefined,但是为了后来的苹果不跟着前边的GNU一
: 样走呢

k***0
发帖数: 1381
30
谁告诉你gnu是行业标准的。你知道当初#pragma在gn下是啥么

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

相关主题
C语言大文件如何得到文件大小?Mavericks 9.2 and clang 5.1
有没有Gnu Scientific Library的non GNU替代物?专业c++程序员都用什么ide (转载)
问一个volatile和memcpy一起用的问题牛人们来看看这个Dao语言怎么样
进入Programming版参与讨论
t*********r
发帖数: 2431
31
什么神经病逻辑,undefined就是undefined,怎么implement都可以。g++照你说的这么
牛逼有本事把它改成defined

【在 e*********6 的大作中提到】
: 谢谢。
: 这算是个undefined的behavior,相当于法律没有规定,但是GNU g++已经有实践了,相
: 当于其他法院已经有了判例,为什么苹果不遵守呢

d****i
发帖数: 4809
32
FreeBSD把它的默认的cc从GCC改成clang是有原因的,主要是GCC采用GPL license,和
FreeBSD的BSD license的完全自由随便自个儿改的理念不一样。而并非clang比gcc好。
实际上gcc还是比clang要成熟稳定很多。

gxx

【在 d********g 的大作中提到】
: Clang/LLVM才是趋势吧。本来BSD系的就不怎么鸟GNU/Linux,FreeBSD不久前也全线抛
: 弃GCC了
: OS X:
: $ g++ --version
: Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx
: -include-dir=/usr/include/c++/4.2.1
: Apple LLVM version 7.0.0 (clang-700.1.76)
: Target: x86_64-apple-darwin15.0.0
: Thread model: posix
: FreeBSD:

d********g
发帖数: 10550
33
FreeBSD之前一直被困在GPLv2,导致GCC不能升级到最新的用GPLv3的版本。而Clang直
接把那个旧版的GCC秒成渣了
FreeBSD不愿意随便用GNU的东西,虽然有些东西GNU做得好一点比如GNU grep就比较快

【在 d****i 的大作中提到】
: FreeBSD把它的默认的cc从GCC改成clang是有原因的,主要是GCC采用GPL license,和
: FreeBSD的BSD license的完全自由随便自个儿改的理念不一样。而并非clang比gcc好。
: 实际上gcc还是比clang要成熟稳定很多。
:
: gxx

v*****r
发帖数: 1119
34
背楼主的逻辑惊呆了,还是转行吧,你不适合当程序员

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

v*****r
发帖数: 1119
35
背楼主的逻辑惊呆了,还是转行吧,你不适合当程序员

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

n******7
发帖数: 12463
36
别这么说
他本来就不是程序员
大家再这么嘲讽的话,楼主又要自删主贴了。。。

【在 v*****r 的大作中提到】
: 背楼主的逻辑惊呆了,还是转行吧,你不适合当程序员
C********n
发帖数: 150
37
既然扯到了 Visual C++,GPL,我就再发个相关链接:
http://www.theregister.co.uk/2015/10/21/microsoft_promises_clan
c***r
发帖数: 4631
38
#include
int main(int argc, const char * argv[]) {
std::vector a(10, 5);
a[11] = 100; //Program ended with exit code: 0
//a.at(11) = 10;//libc++abi.dylib: terminating with uncaught exception
of type std::out_of_range: vector::_M_range_check Program ended with exit
code: 9
return 0;
}

【在 d****i 的大作中提到】
: 很好奇如果用Mac OS X下的Clang编译后运行的结果是怎样的?哪个装了Clang编译器的
: 来说说?

k****z
发帖数: 550
39
行业惯例就是undefined,意思是编译器不应该做边界检查。
如果gcc真的每次作边界检查,那是完全错误的行为,因为增加代码白白浪费了cycle,
也可能跟某种假定不做边界检查的代码会有兼容问题。(在历史上有很多代码用这种那
种trick作系统级别的行为)
正确的做法是不做边界检查,由程序员自己负责。

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
g*********e
发帖数: 14401
40
lol

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
相关主题
牛人们来看看这个Dao语言怎么样感觉python的前途堪忧 (转载)
C++11 support is now feature-complete in clang.C++问题: 指针变量是哪里产生的?
C++ 11问题:emplace_back()c++什么编译器好使?
进入Programming版参与讨论
e*********6
发帖数: 3453
41
【 以下文字转载自 Apple 讨论区 】
发信人: ericzhang86 (eric), 信区: Apple
标 题: 被苹果给惊呆了!!
发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
int main(){
vector a(10, 5);
a[11] = 100;
}
这个程序,苹果自带编译器居然给不出正确的结果来。
应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。
真是给苹果跪了。
update 问题自己解决,也知道怎么回事。问题就是apple在一些非硬性标准的惯例不跟
着行业老大gnu走
f*******t
发帖数: 7549
42
如何吐槽?
楼主还是用java吧,c艹不适合你

【在 e*********6 的大作中提到】
: 【 以下文字转载自 Apple 讨论区 】
: 发信人: ericzhang86 (eric), 信区: Apple
: 标 题: 被苹果给惊呆了!!
: 发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
: int main(){
: vector a(10, 5);
: a[11] = 100;
: }
: 这个程序,苹果自带编译器居然给不出正确的结果来。
: 应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。

N***m
发帖数: 4460
43
It is undefined behavior (say, in non-debug mode) , so Apple g++ is not
wrong in this sense.

【在 e*********6 的大作中提到】
: 【 以下文字转载自 Apple 讨论区 】
: 发信人: ericzhang86 (eric), 信区: Apple
: 标 题: 被苹果给惊呆了!!
: 发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
: int main(){
: vector a(10, 5);
: a[11] = 100;
: }
: 这个程序,苹果自带编译器居然给不出正确的结果来。
: 应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。

e*********6
发帖数: 3453
44
如果我想Mac下的g++和linux下的有同样的性质,应该怎么改flag?

【在 N***m 的大作中提到】
: It is undefined behavior (say, in non-debug mode) , so Apple g++ is not
: wrong in this sense.

t***t
发帖数: 6066
45
果子软工很烂的
这两年都出多少事了
e*********6
发帖数: 3453
46
为何,这里很明显,linux是好的,mac的不好,因为改了不属于这个vector的地址

【在 f*******t 的大作中提到】
: 如何吐槽?
: 楼主还是用java吧,c艹不适合你

e*********6
发帖数: 3453
47
请明示。
这里边肯定库和定义不一样,但是Mac用了g++的命令却给出不一样的结果,很奇怪

【在 f*******t 的大作中提到】
: 如何吐槽?
: 楼主还是用java吧,c艹不适合你

C********n
发帖数: 150
T******7
发帖数: 1419
49
try to understand what is undefined behavior.
e*********6
发帖数: 3453
50
谢谢。
这算是个undefined的behavior,相当于法律没有规定,但是GNU g++已经有实践了,相
当于其他法院已经有了判例,为什么苹果不遵守呢

【在 T******7 的大作中提到】
: try to understand what is undefined behavior.
相关主题
发个初级面试题陈皓:关于开源和闭源软件我个人Naive的看法(转载)
Help: undefined symbolhaskell 好像还不支持arm 64吧。
面试被问到G++和GCC编译器的关系strict aliasing是否真的如linus说的那么不堪?
进入Programming版参与讨论
e*********6
发帖数: 3453
51
谢谢推荐.
我所诧异的是【】的操作,尽管是undefined,但是为了后来的苹果不跟着前边的GNU一
样走呢

【在 C********n 的大作中提到】
: http://stackoverflow.com/questions/3056597/are-vectors-more-rig
f*******t
发帖数: 7549
52
GNU怎么做跟apple有什么关系?为什么apple一定要follow?
e*********6
发帖数: 3453
53
gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
立山头当大哥,所以才说被苹果惊呆了

【在 f*******t 的大作中提到】
: GNU怎么做跟apple有什么关系?为什么apple一定要follow?
f*******t
发帖数: 7549
54
行业标准是undefined。另外apple我行我素多年了,有什么好纠结的?

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

e*********6
发帖数: 3453
55
这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
处理,唯独苹果是直接走

【在 f*******t 的大作中提到】
: 行业标准是undefined。另外apple我行我素多年了,有什么好纠结的?
g*****g
发帖数: 34805
56
Undefined就是undefined,写了undefined出了bug 都是骂程序员,没有骂编译器的。
这就如绿灯过马路不看路可以,红灯右转你也不看,撞死活该。

sign

【在 e*********6 的大作中提到】
: 这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
: 处理,唯独苹果是直接走

c***r
发帖数: 4631
57
装个gcc不就得了。

【在 e*********6 的大作中提到】
: 如果我想Mac下的g++和linux下的有同样的性质,应该怎么改flag?
l*****z
发帖数: 3022
58
果家自己是用clang+llvm 不用gcc 或 g++

【在 e*********6 的大作中提到】
: 这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
: 处理,唯独苹果是直接走

e*********6
发帖数: 3453
59
他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu

【在 l*****z 的大作中提到】
: 果家自己是用clang+llvm 不用gcc 或 g++
h******n
发帖数: 2795
60
其实,Apple C(C++)编译器跟GNU GCC几乎是一样的。
你这段代码,很可能在Linux下也能通过。但在,MS Visual Studio C++上就通不过。
我前几天遇到很类似的代码(是别人写的),其中的一个subroutine,在一个特例情况
下(i=0),给开的1D数组大小是0,但程序默认给a[0]赋值。这个程序在RHEL 6.7下成
功运行。但是,我搬到Windows下来,则运行出错。通过debug,发现此处出错。

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
相关主题
mac升级到capitan, python ssl不好使了有没有Gnu Scientific Library的non GNU替代物?
A link issue in Android build问一个volatile和memcpy一起用的问题
C语言大文件如何得到文件大小?Mavericks 9.2 and clang 5.1
进入Programming版参与讨论
i*****r
发帖数: 265
61
又不是java,为啥要报错。segfault或者过了都可以。
b***i
发帖数: 3043
62
这个应该和操作系统对内存的保护有关,和g++无关
用at可以查边界

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
y*j
发帖数: 3139
63
C++的原则是allow shooting his own foot. 这里gcc的处理是不符合标准的,
[在 ericzhang86 (eric) 的大作中提到:]
:【 以下文字转载自 Apple 讨论区 】
:发信人: ericzhang86 (eric), 信区: Apple
:...........
d****i
发帖数: 4809
64
这个不能怪Apple,C++的标准对于vector的operator[],如果越界的话,就是
undefined behavior。看一下C++的manpage:
http://www.cplusplus.com/reference/vector/vector/operator%5B%5D
Portable programs should never call this function with an argument n that is
out of range, since this causes undefined behavior.
在Linux下就会seg fault, 而在OS X下,苹果就仁慈的给了个垃圾数值的结果,只能说
苹果的implementation太委婉了一点。

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
d****i
发帖数: 4809
65
很好奇如果用Mac OS X下的Clang编译后运行的结果是怎样的?哪个装了Clang编译器的
来说说?
f*****r
发帖数: 754
66
选择不同的dialect就会有不同的结果

【在 e*********6 的大作中提到】
: 谢谢。
: 这算是个undefined的behavior,相当于法律没有规定,但是GNU g++已经有实践了,相
: 当于其他法院已经有了判例,为什么苹果不遵守呢

d********g
发帖数: 10550
67
Clang/LLVM才是趋势吧。本来BSD系的就不怎么鸟GNU/Linux,FreeBSD不久前也全线抛
弃GCC了
OS X:
$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx
-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.0.0 (clang-700.1.76)
Target: x86_64-apple-darwin15.0.0
Thread model: posix
FreeBSD:
$ clang --version
FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
Target: x86_64-unknown-freebsd10.2
Thread model: posix
GPL不是啥灵丹妙药,open source也并非GNU的天下

【在 e*********6 的大作中提到】
: 【 以下文字转载自 Apple 讨论区 】
: 发信人: ericzhang86 (eric), 信区: Apple
: 标 题: 被苹果给惊呆了!!
: 发信站: BBS 未名空间站 (Fri Oct 23 17:06:50 2015, 美东)
: int main(){
: vector a(10, 5);
: a[11] = 100;
: }
: 这个程序,苹果自带编译器居然给不出正确的结果来。
: 应该是vector越界,runtime error,但是苹果的g++照样能用给出结果来。

d********g
发帖数: 10550
68
GNU不是啥行业标准,Linux才是BSD的小弟,Clang/LLVM相比GCC是长江后浪推前浪。
GCC爱怎么玩是它自己的事,就好像MS、Intel的编译器也一直夹带私货

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

k***0
发帖数: 1381
69
井底之蛙,c++这块gnu算个鸟蛋行标,鬼才follow gnu呢

【在 e*********6 的大作中提到】
: 谢谢推荐.
: 我所诧异的是【】的操作,尽管是undefined,但是为了后来的苹果不跟着前边的GNU一
: 样走呢

k***0
发帖数: 1381
70
谁告诉你gnu是行业标准的。你知道当初#pragma在gn下是啥么

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

相关主题
Mavericks 9.2 and clang 5.1C++11 support is now feature-complete in clang.
专业c++程序员都用什么ide (转载)C++ 11问题:emplace_back()
牛人们来看看这个Dao语言怎么样感觉python的前途堪忧 (转载)
进入Programming版参与讨论
t*********r
发帖数: 2431
71
什么神经病逻辑,undefined就是undefined,怎么implement都可以。g++照你说的这么
牛逼有本事把它改成defined

【在 e*********6 的大作中提到】
: 谢谢。
: 这算是个undefined的behavior,相当于法律没有规定,但是GNU g++已经有实践了,相
: 当于其他法院已经有了判例,为什么苹果不遵守呢

d****i
发帖数: 4809
72
FreeBSD把它的默认的cc从GCC改成clang是有原因的,主要是GCC采用GPL license,和
FreeBSD的BSD license的完全自由随便自个儿改的理念不一样。而并非clang比gcc好。
实际上gcc还是比clang要成熟稳定很多。

gxx

【在 d********g 的大作中提到】
: Clang/LLVM才是趋势吧。本来BSD系的就不怎么鸟GNU/Linux,FreeBSD不久前也全线抛
: 弃GCC了
: OS X:
: $ g++ --version
: Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx
: -include-dir=/usr/include/c++/4.2.1
: Apple LLVM version 7.0.0 (clang-700.1.76)
: Target: x86_64-apple-darwin15.0.0
: Thread model: posix
: FreeBSD:

d********g
发帖数: 10550
73
FreeBSD之前一直被困在GPLv2,导致GCC不能升级到最新的用GPLv3的版本。而Clang直
接把那个旧版的GCC秒成渣了
FreeBSD不愿意随便用GNU的东西,虽然有些东西GNU做得好一点比如GNU grep就比较快

【在 d****i 的大作中提到】
: FreeBSD把它的默认的cc从GCC改成clang是有原因的,主要是GCC采用GPL license,和
: FreeBSD的BSD license的完全自由随便自个儿改的理念不一样。而并非clang比gcc好。
: 实际上gcc还是比clang要成熟稳定很多。
:
: gxx

v*****r
发帖数: 1119
74
背楼主的逻辑惊呆了,还是转行吧,你不适合当程序员

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

v*****r
发帖数: 1119
75
背楼主的逻辑惊呆了,还是转行吧,你不适合当程序员

【在 e*********6 的大作中提到】
: gnu是大哥,是公认行业标准。apple是后来者是小弟。apple不follow就是apple打算自
: 立山头当大哥,所以才说被苹果惊呆了

n******7
发帖数: 12463
76
别这么说
他本来就不是程序员
大家再这么嘲讽的话,楼主又要自删主贴了。。。

【在 v*****r 的大作中提到】
: 背楼主的逻辑惊呆了,还是转行吧,你不适合当程序员
C********n
发帖数: 150
77
既然扯到了 Visual C++,GPL,我就再发个相关链接:
http://www.theregister.co.uk/2015/10/21/microsoft_promises_clan
c***r
发帖数: 4631
78
#include
int main(int argc, const char * argv[]) {
std::vector a(10, 5);
a[11] = 100; //Program ended with exit code: 0
//a.at(11) = 10;//libc++abi.dylib: terminating with uncaught exception
of type std::out_of_range: vector::_M_range_check Program ended with exit
code: 9
return 0;
}

【在 d****i 的大作中提到】
: 很好奇如果用Mac OS X下的Clang编译后运行的结果是怎样的?哪个装了Clang编译器的
: 来说说?

k****z
发帖数: 550
79
行业惯例就是undefined,意思是编译器不应该做边界检查。
如果gcc真的每次作边界检查,那是完全错误的行为,因为增加代码白白浪费了cycle,
也可能跟某种假定不做边界检查的代码会有兼容问题。(在历史上有很多代码用这种那
种trick作系统级别的行为)
正确的做法是不做边界检查,由程序员自己负责。

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
g*********e
发帖数: 14401
80
lol

【在 e*********6 的大作中提到】
: 他用可以理解,规则上没问题,就是他不按照行业惯例follow gnu
相关主题
C++问题: 指针变量是哪里产生的?Help: undefined symbol
c++什么编译器好使?面试被问到G++和GCC编译器的关系
发个初级面试题陈皓:关于开源和闭源软件我个人Naive的看法(转载)
进入Programming版参与讨论
i****k
发帖数: 668
81
瞎扯,按stop sign处理是交规规定,没吃过这个ticket吧?

sign

【在 e*********6 的大作中提到】
: 这就好比红灯停绿灯行是行业标准,红灯右转没定义。大家通行办法是按照stop sign
: 处理,唯独苹果是直接走

k**********g
发帖数: 989
82
use vector.at, which has bounds check.
index operator has no bounds check.
Bookmark this website: http://en.cppreference.com
If you program in C++, you can't rely on your memory. You must check the
reference documentation often.
http://en.cppreference.com/w/cpp/container/vector/at
http://en.cppreference.com/w/cpp/container/vector/operator_at
1 (共1页)
进入Programming版参与讨论
相关主题
mac升级到capitan, python ssl不好使了C++11 support is now feature-complete in clang.
A link issue in Android buildC++ 11问题:emplace_back()
C语言大文件如何得到文件大小?感觉python的前途堪忧 (转载)
有没有Gnu Scientific Library的non GNU替代物?C++问题: 指针变量是哪里产生的?
问一个volatile和memcpy一起用的问题c++什么编译器好使?
Mavericks 9.2 and clang 5.1发个初级面试题
专业c++程序员都用什么ide (转载)Help: undefined symbol
牛人们来看看这个Dao语言怎么样面试被问到G++和GCC编译器的关系
相关话题的讨论汇总
话题: undefined话题: gnu话题: apple话题: gcc话题: clang