【发布时间】:2021-01-31 03:56:07
【问题描述】:
在 C11 标准中
6.9 外部定义
语法
translation-unit: external-declaration translation-unit external-declaration external-declaration: function-definition declaration
在哪里
6.9.1 函数定义
语法
function-definition: declaration-specifiers declarator declaration-listopt compound-statement declaration-list: declaration declaration-list declaration
和
6.7 声明
语法
declaration: declaration-specifiers init-declarator-listopt ; static_assert-declaration declaration-specifiers: storage-class-specifier declaration-specifiersopt type-specifier declaration-specifiersopt type-qualifier declaration-specifiersopt function-specifier declaration-specifiersopt alignment-specifier declaration-specifiersopt init-declarator-list: init-declarator init-declarator-list , init-declarator init-declarator: declarator declarator = initializer...
声明指定了一组的解释和属性 标识符。标识符的定义是对该标识符的声明 标识:
- 对于一个对象,导致为该对象保留存储空间;
- 对于函数,包括函数体;
- 对于枚举常量,是标识符的(唯一)声明;
- 对于 typedef 名称,是标识符的第一个(或唯一一个)声明。
function-definition 是 declaration 吗?
declaration 是使用 function-specifier 还是 function-definition 或其他什么? (《6.7.4 函数说明符》引入了内联函数的定义,所以看起来function-definition就是declaration?)
在external-declaration 中,为什么function-definition 被单独列出而不是包含在declaration 中?
谢谢。
【问题讨论】:
-
函数定义也意味着声明(如果函数之前没有声明,那么定义也是声明)。
标签: c function declaration