gpt4 book ai didi

c++ - 头文件中定义的函数实现是否编译成静态库?

转载 作者:可可西里 更新时间:2023-11-01 11:56:41 27 4
gpt4 key购买 nike

假设我们有大量带有类和实现的 header ,如下所示:

// header.h
#ifndef MYHEADER
#define MYHEADER
class myClass {
public:
int one()
{
return 1;
}
int two();
};
#endif // MYHEADER

和一些带有一些函数实现的cpp文件:

// header_impl.cpp
#include "header.h"
int myClass::two()
{
return 2;
}

将进入 .lib (.a) 库包以实现 int one() 或它将保留在 header 中并仅在有人使用 lib 的情况下进行编译,因此此 header 倾向于使用它在那里的代码(并将被编译到他的代码中,但更新会出现在 .lib (.a) 文件中)?

那么在头文件中定义的函数实现是否被编译成静态库?

最佳答案

假设函数本身没有被任何库函数使用,并且没有库函数获取它的地址[生成一个函数指针],那么编译器没有理由生成它的“真正的函数”。当然,由于内联实际上是一个“编译器决定”的问题,因此编译器完全有可能决定不使用内联函数,而实际上是在编译它的目标文件中创建一个。

但一般来说,对于小函数,不会,它只会作为源代码存在于header中,然后在调用的地方被内联。

关于c++ - 头文件中定义的函数实现是否编译成静态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14759643/

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