游戏开发论坛

 找回密码
 立即注册
搜索
楼主: tarkey

小谈目前C++编译器一些不太合理的地方。

[复制链接]

0

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
QQ
发表于 2004-6-8 12:52:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

inline函数的条件很苛刻,我和楼主正好相反,我是经常想让一个函数被inline却不如愿,呵呵~~~
我觉得,如果很在乎程序大小的话,不如打开编译选项里的优化size。
而且楼主说的STL的问题似乎与它的实现版本有关,我看了debian linux下的STL的代码,成员函数的定义并不全在类的定义里面。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-6-8 13:08:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

MSVC的话,可以用__forceinline
gcc的话,可以用__inline__ __attribute__((always_inline))来强行inline

呵呵,要知道C99的有一条理念就是:充分相信程序员,让他们干任何他们想干的。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-6-9 09:24:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

关于你所说的 TEMPLATE 成员函数是 inline 的说法,实属大错特错,而且要实现你所说的模版的分离模型,也远非你想得那么简单,否则的话 这些主流的 c++ complier 早就实现了。关于 template 分离模型,在 《c++ template 》中有详细论述,有几种方法可以实现,1. 包含模型:也就是说象 generic c++ class 一样,定义和实现写在两个文件中,但是要在 declare 中 include impletement 。2. 使用 special instance, 也就是 ms 回信给你说的针对某个类型实例化你的 template class。3. 使用 export 模型,在 template 前加 export key word,但是很不幸,这个关键字目前只有一个编译器支持。
以上说的三种方法都存在缺陷,所以对于 模版的分离目前还没有一个完美的办法,至于为什么会产生这样的问题,看你也不懂 template ,还是好好看看书在来说吧。
另外对于你说的 c++ class cstor 默认是内联的说法,简直是无稽之谈,如果那找你说的,那么 面向对象的特性就别实现了。还是建议你看一本书, c++ object model,是目前 ms vc++.net complier 设计师写的,那上面写得很清楚。
最后,我希望你在讨论问题的时候不要总是动不懂就拿中指鄙视别人,因为这样做并不能掩饰你只是上的浅薄与无知,只能证明你素质很低下!!!

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-6-9 10:08:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

呵呵,我不激激你,你会去看书,你会去找这些资料?
告诉你吧,书你是看了,但是还是没有看明白,或者是我说的你还没看明白。
我想我对template应该比你了解得多,export那个东西,除非你非常明白你的template将如何用,否则基本上不可能用这个的。你说的那三个方法,我都知道,除此之外,也没别的方法了。
另外我好象没特意的说constructor是内联的吧,你把我的东西看仔细了再说话,我是说直接写在类定义里面的是inline,比如:
class A
{
public:
    A() {}
}
这个时候,A的构造函数就是inline的,又比如:
class A
{
public:
    void foo()
    {
        ....
    }
};
这个时候,foo也是inline的,只有写在定义外,即:
void A::foo()
{
    ....
}
这样才不是inline的,你仔细的读读STL代码就会发现基本上STL的东西都是写在类的定义内的。

做人要厚道啊,不鄙视你都不行了。

1

主题

66

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2004-6-9 10:38:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

感觉楼上说得没什么道理
只是代码实现的位置不同而已,为什么会有这么大的区别呢?

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-6-9 10:49:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

。。。。。。。。
你打开MSDN,搜搜inline的定义就好,我刚刚找到一句:
A function defined in the body of a class declaration is an inline function.
感觉这个东西不是什么时候都好用的。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-6-9 19:09:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

真是服了你了,你自己看看你发过的言论,和你说的自相矛盾,真的叫人无法理解你的思维了,也许是出于混乱状态?
不过也许你经常鄙视别人,所以习惯了,由此可以推断出你在现实中的为人也不会怎样,所以可以原谅。
最后一次回复,觉得在这里跟着种人浪费时间很不值得,真的,很不值得。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-6-9 21:19:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

谈技术就谈技术,有种的说得我心服口服啊。
说我发的东西矛盾,我从顶楼到这一楼就没修改过帖子,你到是讲讲我什么地方矛盾了。
谈不出观点就shut up your ****ing mouth,别他妈的JJWW的,靠,咬我啊。

0

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2004-6-9 22:35:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

如果C++编译器真有这么些不合理的地 方,那么那些做编译器的专家都该一个个跳海去死了。如果你真的发现了“C++编译器一些不太合理的地方”,那么你首先应该检讨一下自已,是不是真正理解了。如果你坚决说:是!那么恭喜你,马上打电话给盖茨,年薪至少100万——美元,还有你可以天天跟B·S那些大腕喝茶聊天了。:)

0

主题

63

帖子

63

积分

注册会员

Rank: 2

积分
63
发表于 2004-6-10 00:34:00 | 显示全部楼层

Re:小谈目前C++编译器一些不太合理的地方。

inline只是对编译器进行编译的一个建议,至于编译器是否决定inline则需要考虑多方面的因素。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-1 16:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表