gpt4 book ai didi

c - #Define 在整个库中的作用域?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:25 27 4
gpt4 key购买 nike

假设我有一个常数:

#define PI 3.14

假设我有一个包含多个头文件和源文件的静态库。如果我在头文件中声明它,它的范围是否适用于所有源文件?或者源文件是否需要包含带有 PI 声明的 header ?

最佳答案

他们需要包含包含#define PI 3.14 的文件,否则预处理器将不会读取#define 行,随后编译将失败。

在 C++ 中,考虑编译过程的一个好方法是每个单独的 C++ 文件首先通过预处理器运行,它采用所有#define、#include 和其他预处理器语句并在整个代码中替换它们,然后编译(此时,C++ 文件和通过#include 引入的任何内容几乎被视为一个非常大的单个文件),然后,链接器获取所有 C++ 的预处理/编译阶段的最终输出文件并将它们组装成一个最终输出文件。预处理器(处理定义)在编译阶段之前工作,而不是在链接期间工作。

关于c - #Define 在整个库中的作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649564/

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