3 回答
TA贡献1789条经验 获得超8个赞
如果你比较C89带着C++下面是几件事
C+中没有暂定定义
int n;
int n; // ill-formed: n already defined
int[]和int[N]不兼容(C+中没有兼容类型)
int a[1];
int (*ap)[] = &a; // ill-formed: a does not have type int[]
无K&R函数定义样式
int b(a) int a; { } // ill-formed: grammar error
嵌套结构在C+中具有类范围。
struct A { struct B { int a; } b; int c; };
struct B b; // ill-formed: b has incomplete type (*not* A::B)
没有默认的int
auto a; // ill-formed: type-specifier missing
C99增加了很多其他案例
参数数组尺寸中的声明说明符没有特殊处理
// ill-formed: invalid syntax
void f(int p[static 100]) { }
无变长阵列
// ill-formed: n is not a constant expression
int n = 1;
int an[n];
没有灵活的数组成员
// ill-formed: fam has incomplete type
struct A { int a; int fam[]; };
没有用于帮助混叠分析的限制限定符
// ill-formed: two names for one parameter?
void copy(int *restrict src, int *restrict dst);
TA贡献1828条经验 获得超4个赞
C+也有新的关键字。以下是有效的C代码,但不能在C+下编译:
int class = 1;
int private = 2;
int public = 3;
int virtual = 4;
- 3 回答
- 0 关注
- 566 浏览
添加回答
举报