|
|
1
26
这里已经有很多了,所以也许这只是一个小的补充,但这是我发现的最大的区别。 图书馆:
习语:
忠告:
|
|
|
2
12
Glib 是现代C的一个很好的起点,它使您习惯了不透明类型和半对象方向等概念,这些概念在现代C中很常见。在光谱的另一端,标准POSIX API是一种“经典”C。 从C++到C最大的差距不是语法,它是习语,在那里,像C++一样,有不同的编程流派。如果您使用的是设备驱动程序,而不是XML解析器,那么您将编写相当不同的C。 |
|
|
3
6
Q5。还有什么需要知道的吗? 购买一份K&R2并阅读。从每页的成本来看,这本书可能是你用自己的钱买的最昂贵的计算机书籍,但它会让你对C和它的思维过程有深刻的理解。做练习也会磨练你的技能,让你习惯于语言中与C++无关的东西。 |
|
|
4
4
按顺序回答问题:
其中有些似乎相当简洁,但生活就是这样。C有一些很好的库,但是没有一个地方像他们收集到的Boost一样,或者没有一个像Boost这样的相对统一的接口。
有很多成语,但其中很多都是关于如何编辑代码的,比如通过编写
在每个角落等待的陷阱/陷阱大多源于缺少动态数据结构(如字符串和向量),因此您经常需要自己编写这样的东西。如果不使用运算符重载、构造函数等,则很难使它们真正具有通用性。很多图书馆都有它们,但你最终还是会卷起你自己的,因为:
至少对我来说,心态上的差异几乎肯定是最大的。当我编写C++时,我几乎把所有的实际精力集中在设计最干净的可能的接口上,并且我倾向于将接口的实现视为 几乎 一次性代码。在大多数情况下,我并不打算对代码的这一部分做细微的调整——只要接口是好的,替换整个实现通常就足够容易,我不太担心。 在C中,几乎完全或干净地将接口与实现分离似乎(至少在我看来)要困难得多。因此,我倾向于花费更多的时间来尽可能干净地实现代码的每一部分,因为以后的更改往往更困难,丢弃和替换不太好的部分的可能性要小得多。 编辑(因为人们对C99支持提出了疑问):虽然我关于缺少C99支持的声明可能看起来很苛刻,但事实是这是真的。 VC++:支持C95,并有一对夫妇的C99特性(例如C++风格的注释分隔符),主要是因为C99标准化了它们以前的扩展。 GNU:根据 C99 Features Status page,最新的gcc(4.4)迭代有一些c99特性,但是一些(包括vlas)被描述为“坏的”,其他的则被描述为“丢失的”。一些缺失的“功能”实际上是完整的 地区 ,而不是单个功能。 PCC: PCC site 声称C99合规性只是作为未来的目标,而不是作为现在的现实。 Embarcadero Technologies(Nee Borland)似乎根本没有提到与C99的一致性——从表面上看,他们上一次使用C编译器可能早于C99发布。 微软 openly states 他们目前没有支持C99的计划,而且在2010年的Vs发布之前,他们甚至不会考虑这一点。虽然我找不到任何公开声明,但Embarcadero似乎是一样的:没有当前计划的任何暗示,甚至他们也不会考虑很快就着手实施。 虽然GCC和PCC似乎都有计划,但它们目前只是计划而已。他们都公开承认,目前,他们甚至不太接近符合C99。 |
|
|
5
2
这是一个 quick reference 一些你想知道的重要事情。 |
|
|
6
2
这是一个你没有要求的建议:我认为大多数潜在的雇主都认为,如果你知道C++,C.学习C的细点,而有趣的学术练习,IMO不会为你赢得很多资格。 如果你最终处于一个需要做C的位置,你会很快地抓住这些差异。 但别听我说。我太懒了,太笨了,不能学C++。 |
|
|
7
2
C99不是C++的子集,而是单独的语言。 |
|
|
8
1
当我回到C时,我最大的震惊是变量是在函数级别定义的,也就是说,你不能在一个块中定义变量。(
|
|
|
9
1
除了极少数情况下,任何C代码都是有效的C++,所以实际上没有任何新的东西你应该学习。
|
|
|
10
0
因为C++几乎是C89的超集,所以你应该已经知道了所有的C89。你可能想把注意力集中在C89和C99之间的区别上。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |