C ++支持的ANSI C 89和C有什么区别?

时间:2011-09-26 11:26:17

标签: c++ c c89

我知道C ++支持的ANSI C 89和C之间存在一些差异。

例如在ANSI C 89中,您应该在块的第一行声明变量。

或当您想声明struct个变量时,您应该使用struct个关键字(例如struct student std1;)。

或//对于评论无效,您应该使用/ ** /在ANSI C 89中进行评论。

例如,此C代码在ANSI C 89中无效:

struct student
{
  char* name;
};

enum number
{
  ODD,
  EVEN
};

void test()
{
  printf("Hello world!");
  int a, b; // Not valid in ANSI C 89, variables should declare at first line of blocks.
  student std1; // Not valid. It should be: struct student std1;
  struct student std2; // Valid.
  number n1 = ODD; // Not valid.
  enum number n2 = EVEN; // Valid.
}

我想使用ANSI C 89开发一个应用程序,我的问题是:

C ++支持的ANSI C 89和C之间有什么区别?

1 个答案:

答案 0 :(得分:4)

C ++ 98/03的C子集是在C89上建模的(显然,因为C99当时没有出局); C ++ 11的模型是在C99上建模的。尽管如此,语言却完全不同,C ++的C子集与C语言不同。

你实际上是在问“C ++和C之间有什么区别”,这不是一个合适的问题。

(例如,sizeof('a')在C和C ++中有所不同,所以如果您使用的是MSVC ++,那么了解C ++建模的C标准对您没有任何帮助。