【发布时间】:2011-09-26 11:26:16
【问题描述】:
我知道 ANSI C 89 和 C++ 支持的 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 开发一个应用程序,我的问题是:
ANSI C 89 和 C++ 支持的 C 有什么区别?
【问题讨论】:
-
你说的是C99吗? en.wikipedia.org/wiki/C99
-
“C++ 支持的 C”是什么意思?你说的是C99吗?大多数编译器,即使是支持 C99 的编译器,都允许您打开“严格 ANSI”选项,以便在使用非 ANSI 结构时发出警告或错误。
-
什么是“C++支持的C”? C++ 是一种不同的语言,它以 C 为子集,但引入了许多变化和差异。
-
@yi_H:不!我想使用 ANSI C 89,因为某些编译器(例如 MS VC++)不支持 C99。
-
没有“C++ 支持的 C”之类的东西。 C++ 是一种语言。 C是另一种语言。 C++ 允许 C89 中允许的许多事情——事实上,其中大部分是允许的。但是有很多 C++ 允许而 C 不允许的东西 - 例如关键字
class和std::vector。 C++ 标准比 C 标准长得多,这里的答案不可能列出所有的差异。只需从 K&R 等书籍中学习 C89。