用外部链接声明的对象的外部定义

问题描述 投票:1回答:1

我对6.9 p5 C18的N2310中的措词有点困惑:

如果在外部链接中使用通过外部链接声明的标识符,表达式(不作为sizeof_Alignof操作数的一部分运算符,其结果是一个整数常量),在整个位置上程序应完全标识符;否则,不得超过一个。 164)

问题:从此引号中可以明显看出,程序中某个地方的外部定义(如果有的话)也应声明一个具有外部链接的标识符?

正如我强调的那样,[[整个程序中的某个地方,标识符应该有一个外部定义。它没有指定定义应使用哪个链接声明标识符。示例:

tu1.c

int a = 10;

tu2.c

static int a = 20;

从形式上来说,我们在a中声明了标识符tu1.c的一个外部定义,在tu2.c中定义了另一个定义,因此我们可以将上面引用的引号应用于此示例。

尽管要表示以不同的方式声明的相同实体标识符,都应使用6.2.2/2中指定的外部链接进行声明:

构成翻译单元和库的一组整个程序,每个特定标识符的声明都带有外部链接表示相同的对象或功能。

这里不是这种情况。

c language-lawyer declaration definition linkage
1个回答
2
投票
© www.soinside.com 2019 - 2024. All rights reserved.