一切福田,不離方寸,從心而覓,感無不通。

C和C++的区别介绍

  1.  C++虽然主要是以C的基础发展起来的一门新语言

    C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99.因此也没有先学C再说C++的说法,也不再(注意这个"不再")有C++语法是C语法的超集的说法。

  2.  C++/CLI 和 C# 是微软的

    C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语法相似。但哪两种语言不相似呢?都是abc这26个字母。

  3.  不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++

    不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。不要使用CBX/VC++6.0/VC2005等对C/C++标准支持不好的编译器,虽然这些编译器适合工作,但不适合学习,因为它们中的语法陷阱很多。记住唯一适合学习的编译器是gcc/mingw.[antigloss注:Dev-C++ 使用的编译器就是gcc & g++]

  4.  不要用""代替<>来包含系统头文件

    不要用""代替<>来包含系统头文件,虽然有些编译器允许你这样做,但它不符合C/C++标准。错误的示例:#include "stdio.h",#include "iostream".[antigloss注:习惯上,<> 用于包含标准头文件和系统头文件,"" 用于包含自定义头文件。标准似乎没有明确规定不准用 "" 包含标准头文件和系统头文件。使用 "" 包含标准头文件或者系统头文件只能说是一种不良风格。]

  5.  不要将main函数的返回类型定义为void

    不要将main函数的返回类型定义为void,虽然有些编译器允许你这样做,但它不符合C/C++标准。不要将函数的int返回类型省略不写,在C++中要求编译器至少给一个警告。错误的示例:void main() {},main() {} [antigloss注:C99和C++98都要求编译器对省略int至少发出一个警告]如果不需要从命令行中获取参数,请用int main(void) ;否则请用int main( int argc, char *argv[] )

  6.  不要把VC++中的 #include "stdafx.h" 贴出来

    不要把VC++中的 #include "stdafx.h" 贴出来,它是预编译头文件。如同上菜时不要把厨师也放到托盘中。

  7.  [C++]不要#include <iostream.h>

    [C++]不要#include <iostream.h>,不要#include <string.h>,因为它们已经被C++标准明确的废弃了,请改为 #include <iostream> 和 #include <cstring>.规则就是:

    a. 如果这个头文件是旧C++特有的,那么去掉。h后缀,并放入std名字空间,

    比如 iostream.h 变为 iostream.

    b. 如果这个头文件是C也有的,那么去掉。h后缀,增加一个c前缀,比如 string.h

    变为 cstring;stdio.h 变为 cstdio, 等等。

    BTW:不要把string、cstring、string.h三个头文件搞混淆

    BTW:windows.h不是C/C++的标准文件,因此它的命名C/C++不管。