为了账号安全,请及时绑定邮箱和手机立即绑定

C不是C+的子集在哪里?

C不是C+的子集在哪里?

C++ C
汪汪一只猫 2019-07-10 15:05:28
C不是C+的子集在哪里?我在很多书中读到,C是C+的一个子集。有些书说C是C+的子集,除了那些小细节.在某些情况下,代码将在C中编译,而不是C+?
查看完整描述

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);


查看完整回答
反对 回复 2019-07-10
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

在C中,sizeof('a')等于sizeof(int).

在C+中,sizeof('a')等于sizeof(char).


查看完整回答
反对 回复 2019-07-10
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

C+也有新的关键字。以下是有效的C代码,但不能在C+下编译:


int class = 1;

int private = 2;

int public = 3;

int virtual = 4;


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 566 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信