BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #44246同步于 2010/9/26
CPP机器人发帖

[合集] 【C++能取代C吗?】[讨论]

shenlei
2010/9/26镜像同步0 回复
☆─────────────────────────────────────☆ chentingpc (chentingpc) 于 (Wed Sep 8 13:57:27 2010) 提到: 话说最近新学C++,老师说C++基本是完全兼容C,也就是说C是C++的一个子集。 那么,为啥C++还没取代C呢? C++,“上升”可以当“C++”用,用类、模板、重载,“下降”也可以当C来用,怎么就不把C给取代了呢? 各位大牛都来说说这是怎么回事呢,C究竟有啥关键元素使它不可替代? ☆─────────────────────────────────────☆ gootyking (『热情一顶乐团』团长|回帖终结者A1) 于 (Wed Sep 8 14:08:31 2010) 提到: 不能吧 【 在 chentingpc (chentingpc) 的大作中提到: 】 : 话说最近新学C++,老师说C++基本是完全兼容C,也就是说C是C++的一个子集。 : 那么,为啥C++还没取代C呢? : C++,“上升”可以当“C++”用,用类、模板、重载,“下降”也可以当C来用,怎么就不把C给取代了呢? : ................... ☆─────────────────────────────────────☆ xiecaiji (饼干--ex什么的最讨厌了) 于 (Wed Sep 8 14:16:06 2010) 提到: C++下降。。怎么个下降法。。当C用的时候就是C了啊。。 ☆─────────────────────────────────────☆ chentingpc (chentingpc) 于 (Wed Sep 8 14:26:23 2010) 提到: 有其他区别吧。。ms分不清c与c++的界限。。 【 在 xiecaiji 的大作中提到: 】 : C++下降。。怎么个下降法。。当C用的时候就是C了啊。。 ☆─────────────────────────────────────☆ y0192837465 (kimi) 于 (Wed Sep 8 15:52:46 2010) 提到: 感觉不能 ☆─────────────────────────────────────☆ rayzl0523 (阿鲁卡多) 于 (Wed Sep 8 16:10:16 2010) 提到: C++用Linux的创始人Linus(是这个名字么?)的话说是很混乱,面向对象和面向过程都很混乱! ☆─────────────────────────────────────☆ wks (cloverprince) 于 (Wed Sep 8 16:44:16 2010) 提到: 等到有一天, - 你在你的一个库里实现了100个名字叫foo的函数,而且你还能指出每个foo在mangle以后的实际名字。 - 你知道 complex<double> a,b,c; a=1; b=2; c=(a+b)*(a-b); 或者 string a,b,c; a="foo"; b="bar"; c=a+"baz"+b+a;的过程中一共构造了多少个对象,析构了多少个对象。 - 你知道为什么编译一个只有3个自己定义的类的wxWidget的最简单的HelloWorld窗口程序居然需要长达50秒钟,而等效的GTK+程序只要不到1秒钟。同时你也因此知道了VisualC++里面每次编译都生成的肥硕的pch (pre-compiled header)是干什么用的。 那么C++就能替代C了。 ☆─────────────────────────────────────☆ lhclumsy (yy) 于 (Wed Sep 8 21:59:12 2010) 提到: 想了下 c++对象是用c写的吗?嘿嘿 求解 ☆─────────────────────────────────────☆ ericyosho (ericyosho) 于 (Wed Sep 8 23:00:42 2010) 提到: 可以取代啊,但是许多嵌入式,没有好的C++编译器啊。 光理论上没用,那不还得有具体的工具么。 ☆─────────────────────────────────────☆ easing (easing) 于 (Thu Sep 9 11:15:19 2010) 提到: 呵呵,过度设计的副作用啊,抽象在解决复杂度的同时又引入新的复杂度。 【 在 wks 的大作中提到: 】 : 等到有一天, : - 你在你的一个库里实现了100个名字叫foo的函数,而且你还能指出每个foo在mangle以后的实际名字。 : - 你知道 complex<double> a,b,c; a=1; b=2; c=(a+b)*(a-b); 或者 string a,b,c; a="foo"; b="bar"; c=a+"baz"+b+a;的过程中一共构造了多少个对象,析构了多少个对象。 : ................... ☆─────────────────────────────────────☆ bupteinstein (相期以茶) 于 (Thu Sep 9 12:47:32 2010) 提到: 【 在 easing 的大作中提到: 】 : 呵呵,过度设计的副作用啊,抽象在解决复杂度的同时又引入新的复杂度。 : 【 在 wks 的大作中提到: 】 : : 等到有一天, : ................... 是啊。 C++中的很多规定,是为了满足更抽象的程序设计提出来的,这对于更复杂的应用,带来的代价是很小的,但对于本来可以用C来完成的应用,带来的代价是不必要的。 ☆─────────────────────────────────────☆ jokerlee (Jackal The Dire) 于 (Thu Sep 9 16:47:29 2010) 提到: 话说C还没取代ASM呢 ☆─────────────────────────────────────☆ FadeToBlack (口口口) 于 (Thu Sep 9 23:07:16 2010) 提到: 【 在 wks (cloverprince) 的大作中提到: 】 : 标 题: Re: 【C++能取代C吗?】[讨论] : 发信站: 北邮人论坛 (Wed Sep 8 16:44:16 2010), 站内 : : 等到有一天, : : - 你在你的一个库里实现了100个名字叫foo的函数,而且你还能指出每个foo在mangle以后的实际名字。 我艹,这个蛋疼……知道这个是为了什么 : : - 你知道 complex<double> a,b,c; a=1; b=2; c=(a+b)*(a-b); 或者 string a,b,c; a="foo"; b="bar"; c=a+"baz"+b+a;的过程中一共构造了多少个对象,析构了多少个对象。 不关心这个问题很久了 : : - 你知道为什么编译一个只有3个自己定义的类的wxWidget的最简单的HelloWorld窗口程序居然需要长达50秒钟,而等效的GTK+程序只要不到1秒钟。同时你也因此知道了VisualC++里面每次编译都生成的肥硕的pch (pre-compiled header)是干什么用的。 这个的确不知道,wks大牛解释一下 : : 那么C++就能替代C了。 : : -- : 代做C语言作业,男生勿扰,有意者站内联系。 : 免费贴代码:http://wksprivate.appspot.com/pastebin/ : 人品计算器:http://wksprivate.appspot.com/renpincalc/ : 我的私人博客: http://wks-private.blogspot.com/ : 和编程相关的一般在这里:http://cloverprince.javaeye.com/ : ※ 修改:·wks 于 Sep 8 16:54:39 2010 修改本文·[FROM: 114.251.86.*] : ※ 来源:·北邮人论坛 http://bbs.byr.cn·[FROM: 114.251.86.*] ☆─────────────────────────────────────☆ Christa (Christa) 于 (Fri Sep 10 18:01:48 2010) 提到: C++应该不能取代C吧,一个是面向对象,一个是面向过程。效率和灵活性方面,C++多数时候不如C. 好像,C++和Java都是用C写的。我认为程序员C是基础,甚至包括ASM。 ☆─────────────────────────────────────☆ ATV (ATV) 于 (Fri Sep 10 19:31:42 2010) 提到: [quote]- 你知道为什么编译一个只有3个自己定义的类的wxWidget的最简单的HelloWorld窗口程序居然需要长达50秒钟,而等效的GTK+程序只要不到1秒钟。同时你也因此知道了VisualC++里面每次编译都生成的肥硕的pch (pre-compiled header)是干什么用的。 [/quote] 我每个项目必定禁用 pch 因为加入新的文件编译就报错了 ☆─────────────────────────────────────☆ FadeToBlack (口口口) 于 (Fri Sep 10 20:21:39 2010) 提到: 我也想禁用pch,因为incredibuild总是给警告 【 在 ATV (ATV) 的大作中提到: 】 : [quote]- 你知道为什么编译一个只有3个自己定义的类的wxWidget的最简单的HelloWorld窗口程序居然需要长达50秒钟,而等效的GTK+程序只要不到1秒钟。同时你也因此知道了VisualC++里面每次编译都生成的肥硕的pch (pre-compiled header)是干什么用的。 : [/quote] : 我每个项目必定禁用 pch : ................... ☆─────────────────────────────────────☆ wks (cloverprince) 于 (Fri Sep 10 20:43:27 2010) 提到: pch就是为了解决C++编译慢的问题。就是把编译的中间状态保存下来。 比如,你有一个头文件叫precompiledheader.h,或者叫stdafx.h 那么,你可以让编译器解析一下precompiledheader.h,然后,把这个时候的编译器的状态保存成一个文件,比如叫whatthefuck.pch。然后,只要保证每个.cpp文件的最开头必须是#include "precompiledheader.h",那么,编译器可以直接从那个保存的状态继续编译。所以,编译会快非常多。 precompiledheader.h里面本身可以包含多个别的头文件。包含的越多,“预编译”的过程就越慢,但以后编译会更快。但是,一旦precompiledheader.h本身改变了,就要再“预编译”一次。 【 在 FadeToBlack 的大作中提到: 】 : : 【 在 wks (cloverprince) 的大作中提到: 】 : : 标 题: Re: 【C++能取代C吗?】[讨论] : ................... ☆─────────────────────────────────────☆ wks (cloverprince) 于 (Fri Sep 10 20:45:13 2010) 提到: 检查新加入的.cpp文件的第一行是不是#include "stdafx.h" 【 在 ATV 的大作中提到: 】 : [quote]- 你知道为什么编译一个只有3个自己定义的类的wxWidget的最简单的HelloWorld窗口程序居然需要长达50秒钟,而等效的GTK+程序只要不到1秒钟。同时你也因此知道了VisualC++里面每次编译都生成的肥硕的pch (pre-compiled header)是干什么用的。 : [/quote] : 我每个项目必定禁用 pch : ................... ☆─────────────────────────────────────☆ zxsword (YNWA) 于 (Fri Sep 10 21:07:28 2010) 提到: 会C++的都是大牛=。= ☆─────────────────────────────────────☆ windam (棒棒糖) 于 (Fri Sep 10 21:07:47 2010) 提到: 或者也可以单独对该cpp文件禁用预编译头 【 在 wks 的大作中提到: 】 : 检查新加入的.cpp文件的第一行是不是#include "stdafx.h" : 【 在 ATV 的大作中提到: 】 : : [quote]- 你知道为什么编译一个只有3个自己定义的类的wxWidget的最简单的HelloWorld窗口程序居然需要长达50秒钟,而等效的GTK+程序只要不到1秒钟。同时你也因此知道了VisualC++里面每次编译都生成的肥硕的pch (pre-compiled header)是干什么用的。 : ................... ☆─────────────────────────────────────☆ FadeToBlack (口口口) 于 (Fri Sep 10 21:48:36 2010) 提到: c不会出现这种情况吗? 【 在 wks (cloverprince) 的大作中提到: 】 : pch就是为了解决C++编译慢的问题。就是把编译的中间状态保存下来。 : 比如,你有一个头文件叫precompiledheader.h,或者叫stdafx.h : 那么,你可以让编译器解析一下precompiledheader.h,然后,把这个时候的编译器的状态保存成一个文件,比如叫whatthefuck.pch。然后,只要保证每个.cpp文件的最开头必须是#include "precompiledheader.h",那么,编译器可以直接从那个保存的状态继续编译。 : ................... ☆─────────────────────────────────────☆ swaa409 (NVIDIA++) 于 (Fri Sep 10 23:01:49 2010) 提到: 很多自称是C++程序员的人实际在用C++的语法写C程序。 其实C、C++根本不是一个东西,虽然语法是继承的 ☆─────────────────────────────────────☆ gatusokaka (北京溜) 于 (Fri Sep 10 23:07:07 2010) 提到: 肯定不能 【 在 chentingpc 的大作中提到: 】 : 话说最近新学C++,老师说C++基本是完全兼容C,也就是说C是C++的一个子集。 : 那么,为啥C++还没取代C呢? : C++,“上升”可以当“C++”用,用类、模板、重载,“下降”也可以当C来用,怎么就不把C给取代了呢? : ................... ☆─────────────────────────────────────☆ zx0319 (Shane) 于 (Sat Sep 11 00:14:15 2010) 提到: C++和C比起来,还是比较高级的,不太适合底层开发。而C语言对于底层的支持很强大。 【 在 chentingpc 的大作中提到: 】 : 话说最近新学C++,老师说C++基本是完全兼容C,也就是说C是C++的一个子集。 : 那么,为啥C++还没取代C呢? : C++,“上升”可以当“C++”用,用类、模板、重载,“下降”也可以当C来用,怎么就不把C给取代了呢? : ................... ☆─────────────────────────────────────☆ wks (cloverprince) 于 (Sat Sep 11 01:36:56 2010) 提到: 起码GTK+鼓励直接#include<gtk/gtk.h>包含所有的东西。即使这样,那也是瞬间编译完成,比Qt的每次#include<QWidget>然后再#include<QButton>这样分开包含还要快。wxwidget如果全包含了就只能每次预编译50秒了。 【 在 FadeToBlack 的大作中提到: 】 : c不会出现这种情况吗? : 【 在 wks (cloverprince) 的大作中提到: 】 : : pch就是为了解决C++编译慢的问题。就是把编译的中间状态保存下来。 : ................... ☆─────────────────────────────────────☆ yc (yy.c) 于 (Sat Sep 11 09:37:45 2010) 提到: 这个也用讨论。。。各大论坛早有定论,去搜搜大师们的互批吧~ ☆─────────────────────────────────────☆ dragon2000 (龙之梦工作室) 于 (Sat Sep 11 10:29:36 2010) 提到: 现在的嵌入式还真没法用C++取代。想想IC卡的4KB内存容量是什么概念。 【 在 ericyosho 的大作中提到: 】 : 可以取代啊,但是许多嵌入式,没有好的C++编译器啊。 : 光理论上没用,那不还得有具体的工具么。 ☆─────────────────────────────────────☆ nancheng2008 (卡太了··) 于 (Sat Sep 11 10:49:33 2010) 提到: 才知道原来大牛这么多呀·· ☆─────────────────────────────────────☆ ran09210432 (王燃) 于 (Sat Sep 11 10:55:19 2010) 提到: 不能! ☆─────────────────────────────────────☆ xuwln (william) 于 (Sat Sep 11 11:26:29 2010) 提到: Linux内核主要是用C写的,部分关键代码用ASM,执行效率很高。 另外C标准库很小,更加适用于嵌入式开发。注意我不是指J2ME这类东东。 易用的东西基本都是以损失性能为前提。 在应用开发这块,C++基本可以取代C了,甚至还有比C++更加易用的语言。 ☆─────────────────────────────────────☆ lisanwan (04401留守小分队之三儿) 于 (Sat Sep 11 12:03:38 2010) 提到: 不同类型的工具干不同类型的活儿 ☆─────────────────────────────────────☆ yonklee (BUPT_EE) 于 (Sat Sep 11 16:39:04 2010) 提到: 楼主真的是初学者,学深了你就会发现这些只是编程思想上的差异了,面向对象和面向过程的 ☆─────────────────────────────────────☆ Guilt (恶魔) 于 (Sat Sep 11 18:02:28 2010) 提到: 【 在 chentingpc 的大作中提到: 】 : 话说最近新学C++,老师说C++基本是完全兼容C,也就是说C是C++的一个子集。 : 那么,为啥C++还没取代C呢? : C++,“上升”可以当“C++”用,用类、模板、重载,“下降”也可以当C来用,怎么就不把C给取代了呢? : ................... 抽象程度不一样,效率也不一样 ☆─────────────────────────────────────☆ bupteinstein (相期以茶) 于 (Sat Sep 11 18:50:27 2010) 提到: 还是技术版好,四页内容就有好多有用的东西。 ☆─────────────────────────────────────☆ yolanda1989 (曼。) 于 (Sat Sep 11 22:42:09 2010) 提到: 一个是面向对象,一个是面向过程 ☆─────────────────────────────────────☆ maxwellzcc (skywolf) 于 (Fri Sep 17 23:34:39 2010) 提到: 我汗,大牛,膜拜。 【 在 wks 的大作中提到: 】 : 等到有一天, : - 你在你的一个库里实现了100个名字叫foo的函数,而且你还能指出每个foo在mangle以后的实际名字。 : - 你知道 complex<double> a,b,c; a=1; b=2; c=(a+b)*(a-b); 或者 string a,b,c; a="foo"; b="bar"; c=a+"baz"+b+a;的过程中一共构造了多少个对象,析构了多少个对象。 : ...................
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。