|
|
1
2
也许它会,也许它不会。它真的与头文件无关。这里重要的是您的成员函数是在类定义中定义的。当成员函数被这样定义时,它们被视为 内联的 功能。如果编译器决定不实际内联对这些函数的任何调用,则不会对代码大小产生任何影响。如果编译器决定内联任何(或全部)调用,答案将是“它取决于”。对小函数的内联调用可能会导致代码大小增加以及代码大小减小。这完全取决于函数本身和编译器的功能(特别是优化功能)。 |
|
|
2
2
如果编译器决定不内联这些函数,并为它们生成单独的主体,这些主体将出现在使用它们的每个对象文件中,但带有链接器的特殊标志-“弱符号”。当链接器找到此标志时,它将把所有具有该名称的符号组合成一个结果符号(如果这些符号的主体或大小不同,它可能会产生错误消息)。 另外,rtti info和vtables也使用相同的场景。 对于动态库,如果使用相同的类,弱符号连接可能在运行时发生。 |
|
|
3
1
如果您在头中有代码定义,编译器可能会在包含.h的任何时候创建每个函数的冗余副本。这些冗余副本也可能会从链接器触发错误,因此除了内联函数外,通常不赞成这种做法。 |
|
|
4
1
如果头中的函数声明为 静止的 ,而不是“是”,包含该头文件的每个模块(源文件)将在对象文件中存储该函数的副本,最终可执行文件的大小将更大… |
|
5
0
如果函数的代码包含在头文件中,那么编译器可以使用它为每个单独的源文件在对象代码中定义函数,或者直接在调用函数的地方嵌入函数代码。取决于编译器和链接器以及C++的支持,这可能会使您拥有比单独定义的函数更大的代码。如果内联函数足够小,可以通过避免函数调用开销来节省空间。然而,这样的功能必须非常小。 |
|
|
jsejcksn · 猛击:????:找不到命令 10 年前 |
|
|
pjvandehaar imgx64 · 使SQLite3命令文件可执行 11 年前 |
|
|
JMzance · 通过ssh(linux/osx)运行作业 12 年前 |
|
|
Jagath · 如何对XSLT样式表的数据进行编码 12 年前 |
|
|
alexgolec · 如何获取二进制文件的文本部分的偏移量和大小? 12 年前 |
|
|
user2077474 · 运行可执行文件并使用C#显示确认? 13 年前 |
|
|
kjl · 区分脚本是“直接”运行还是使用Python可执行文件运行 13 年前 |