huihut / interview

📚 C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.
https://interview.huihut.com
Other
34.8k stars 7.97k forks source link

关于 `extern “C”` 的描述,是不严谨,乃至错误的。 #114

Open Mq-b opened 12 months ago

Mq-b commented 12 months ago

描述的是:

extern “C”

  • 被 extern 限定的函数或变量是 extern 类型的
  • 被 extern "C" 修饰的变量和函数是按照 C 语言方式编译和链接的

不管是第一句话还是第二句话,都是既不严谨,也错误的。 并且我严重怀疑抄了知乎的一篇文章,描述简直一模一样。

  1. “是 extern 类型的”,这话很莫名其妙,extern 不是类型。 非要狡辩一下那就是,写的时候想着:“语言链接是每个函数类型的一部分”;但也和 extern 没关系。
  2. 这个能扯的其实很多,按照语言层面的标准回答,使用文档的描述最为合适:"C",可以与使用 C 程序语言编写的函数进行链接,使得在 C++ 程序中定义能从 C 单元调用的函数成为可能。 标准并不在乎是如何做到的,如果还要讲,那就是符号修饰,等等。不同平台,不同编译器,即使都使用了 extern "C" 符号修饰也不一定一样,C 标准不存在 ABI,有兴趣可以自己了解。
boolsatellite commented 11 months ago

应该是命名倾轧问题

Mq-b commented 11 months ago

啥意思,命名倾轧? @boolsatellite

zenglikepy commented 1 month ago

国王万岁!

Mq-b commented 1 month ago

国王万岁!

别搞的我们和什么宗教组织一样。🐢🐢🐢

zenglikepy commented 1 month ago