gpt4 book ai didi

c++ - .h 文件是否被编译器或 "just"命名约定区别对待?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:58 25 4
gpt4 key购买 nike

我是 C 系列编程和编译的新手。我试图了解 .c/.cpp 文件与 .h 文件的技术水平较低。我了解 .h 文件用于指定接口(interface)和 .c 或 .cpp 文件用于实现。但是我想知道这种差异是否反射(reflect)在编译器的工作方式上,或者它是否“只是”为我们人类简化的命名约定?理论上你能在 .h 文件中实现并仍然编译它吗?或者在 .c 文件中指定一个接口(interface)?我要求更好地理解编译器实际做了什么。

最佳答案

从技术上讲,就编译器而言,任何扩展之间都没有区别。这与您在放置 #include 的位置手动键入任何文件的内容一样。您可以键入 #include "foo.pdf",编译器将成功包含文件 foo.pdf,只要该文件包含代码(尽管有扩展名)

现在按照惯例,通常将声明放在 .h/hpp 文件(或模板定义)中,将实现放在 .c/cpp 文件中。

许多库都有一个单文件实现,也借助于内联变量/函数。

有时包含文件甚至不存在,例如当包含标准 STL 文件(如 string)时,编译器可能根本不读取文件,而是缓存它/执行它它想要。

有关 #include 的更多信息,请参见 MSDNCPPReference .

关于c++ - .h 文件是否被编译器或 "just"命名约定区别对待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56006312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com