相关疑难解决方法(0)

C中的声明或定义

来自外部变量Wiki:

如果extern关键字和初始化值都不存在,则该语句可以是声明或定义.由编译器来分析程序的模块并做出决定.

我无法完全理解关于C的这个陈述的含义.例如,它是否意味着:

int i;
Run Code Online (Sandbox Code Playgroud)

不一定是声明(因为我一直假设到现在为止),但可能是一个定义,以及(通过定义和声明在同一网页的定义,没有双关语意)?

简而言之,就是上述陈述:a.只是声明,或b.声明+定义?

参考:变量声明和定义

收到的答复摘要:

                         Declaration    Definition    Tentative Definition   Initialized 
int i;   (inside a block)    Yes           Yes                No                No
int i=5; (inside a block)    Yes           Yes                No               Yes(to 5)
int i;   (otherwise)         Yes            No               Yes               Yes(to 0)
extern int i;                Yes            No                No                No


All definitions are declarations but not vice-versa.
Run Code Online (Sandbox Code Playgroud)

c declaration definition

23
推荐指数
2
解决办法
1万
查看次数

C中的哪些对象声明会导致保留存储(即定义)?

C11在第6.7节中规定了哪些声明也是定义:

标识符的定义是该标识符的声明:
- 对于对象,导致为该对象保留存储;
[...]

我没有找到一个完整的列表,其中列出了哪些对象声明会导致保留存储空间.直观地说,我很清楚,但是我无法从C11标准中获得这些信息.

c language-lawyer c11

6
推荐指数
1
解决办法
174
查看次数

标签 统计

c ×2

c11 ×1

declaration ×1

definition ×1

language-lawyer ×1