【问题标题】:Why should I use "extern" for function declaration in C? [duplicate]为什么我应该在 C 中使用“extern”进行函数声明? [复制]
【发布时间】:2015-07-14 07:16:31
【问题描述】:

我想知道如果在声明函数时跳过extern 存储类说明符有什么区别吗?具体来说,下面这两个有什么区别吗?

void foo ();   

extern void foo();

【问题讨论】:

  • 请注意,这两个声明都不是原型(在 C 中)。两者都声明了一个函数,该函数采用不确定(但固定)的参数列表,可能包括零个参数。不过,它不是一个“可变长度参数列表”(varargs)函数——它不像printf() 等人。 C++ 中的情况有所不同;该函数被声明为不带参数。
  • 在函数声明中使用extern 绝对没有任何意义。这是一些陈旧的习惯,在今天绝对没有价值。

标签: c extern


【解决方案1】:

下面两个有区别吗?

基本上没有。

每个函数声明,默认为extern,(即没有任何特定的存储类说明符)。

引用 C11,第 §6.2.2 章,标识符的链接

如果函数标识符的声明没有存储类说明符,则它的链接将完全确定,就好像它是使用存储类说明符 extern 声明的一样。

【讨论】:

    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2019-08-03
    相关资源
    最近更新 更多