c++ - 包含 .cpp 文件而不是 .h 文件以使 vanilla gcc 能够更多地优化我的代码是个好主意吗?

标签 c++ gcc coding-style

在我的项目中使用 #include "randombytes.cpp" 而不是 randombytes.h 是个好主意吗(其中 randombytes.cpp 是我的项目源代码目录中的一个文件)for runtime speed reasonsrandombytes.cpp 看起来像这样:

#ifndef RANDOMBYTES_INCLUDED
#define RANDOMBYTES_INCLUDED

/* include native headers here */

unsigned char *fetch_random_bytes(int amount);

/* include other parts of my project here if necessary */

unsigned char *fetch_random_bytes(int amount) {
  // do stuff
}

#endif

这应该也适用于相互需要的文件等等,对吧?您能想到这不起作用或我无法获得优化 yield 的任何情况吗?

最佳答案

这种做法称为“Unity Build”(google it),除了琐碎的项目外,这通常不是一个好主意,因为每次进行单个更改时都需要重新编译整个项目,这可能意味着等待几分钟每次你修复一个小错误。

至于运行时性能,速度上的差异与启用链接时间优化的编译差别不大。

关于c++ - 包含 .cpp 文件而不是 .h 文件以使 vanilla gcc 能够更多地优化我的代码是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10260269/

相关文章:

c++ - 如何声明指向模板函数的函数指针,其返回类型依赖于模板类

PHP/JS : Removing final comma in a delimited list

c++ - 通用 lambda 的元数

c++ - 延迟加载 DLL

c++ - “boost/iostreams/device/file_descriptor.hpp”文件未找到错误

c - Make 似乎忽略了我的 CFLAGS 和 LDFLAGS

c++ - Eclipse 无法识别我的 GCC

c++ - 什么决定了在 64 位机器上构建的 32 位库是否需要 x86_64 或 i386 依赖项?

silverlight - 如何将 WPF 中的扩展器样式转换为 Silverlight

c++ - 一段用 gcc 而不是 g++ 编译的代码