gpt4 book ai didi

c++ - stdafx.h 跨平台没有问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:43 27 4
gpt4 key购买 nike

嘿,过去几天我一直在关注 learncpp.com tuts,他们说要从 Code::Blocks 的 .cpp 文件中注释掉“#include “stdafx.h”。

删除 include 行是必须的吗?如果您有数百个文件并从 Win7 上的 Visual Studio 更改为 Linux 上的 Code::Blocks 或将其交给使用 Mac 的其他人会怎样?

最佳答案

stdafx.h 是 Visual Studio 生态系统中用于预编译 header 的惯用名称。简而言之,它是一个常规的头文件,但是这个文件的内容将被编译一次,并重新用于项目中的所有 cpp 文件。

这很有用,因为在大多数项目中,几乎所有翻译单元 (cpps) 都使用大量 header (标准库、系统 header 、共享的项目范围定义),因此在编译期间使用 PCH 具有巨大的性能优势

(实际上,PCH 是解决 C++ 低效编译和链接模型的 hack,很遗憾我们需要手动维护它……哎呀,亵渎。)

但这也意味着 - 只要您的 stdafx.h 的内容与 gcc 兼容 - 使用 CodeBlocks 的编译应该仍然有效,但没有立即的性能优势。

由 VS 的应用程序向导生成的 stdafx.h 在其他平台上无法开箱即用 - 它通常包含 Windows.h。因此,要使其正常工作,请使用适当的 #ifdef/#endif 对保护 Windows 特定的定义,反之亦然,以保护 Linux 或 Mac 特定的东西。

关于c++ - stdafx.h 跨平台没有问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5263898/

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