Ale*_*der 5 c++ linkage language-lawyer
[dcl.link]/4中的第五个例子说明如下:
extern "C" {
static void f4(); // the name of the function f4 has internal linkage (not C language linkage)
// and the function’s type has C language linkage.
}
Run Code Online (Sandbox Code Playgroud)
为什么是这样?为什么函数的名称f4具有内部链接,而不是C语言链接?
PS:我是从语言律师的角度问这个.也就是说,如何从标准中的规范段落中得出上述评论声明?
从同一部分,强调我的:
在链接规范中,指定的语言链接适用于所有函数声明符的函数类型,具有外部链接的函数名称,[...]
但是,f4声明了static,这意味着每个[basic.link]/3名称都有内部链接:
具有命名空间作用域的名称具有内部链接,如果它的名称为:
- 显式声明的变量,函数或函数模板
static; 要么, [...]
因此,C链接不适用.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |