gpt4 book ai didi

c++ - 为什么 C++Builder 无法创建预编译头文件?

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:03 28 4
gpt4 key购买 nike

问题

在 CodeGear C++Builder 2009 中,我们使用预编译 header 注入(inject)来大大缩短编译时间。我们将相同的头文件注入(inject)到多个项目中。编译一些项目时,编译器踢出以下警告:

[BCC32 Warning] Dateutils.hpp(43): W8058 Cannot create pre-compiled header: initialized data in header

在这个例子中,Dateutils.hpp 是它提示的文件(CodeGear 的标题)。我也看到过这种情况发生在其他 header 上。有趣的是,这只发生在某些项目中(注入(inject)相同的 header )。

在过去,我必须找到最终包含这个错误文件的头文件,并将其从我的预编译头文件中删除。有谁知道这里发生了什么以及解决它的最佳方法?

更新

我最终对头文件执行了一个消除过程,并得出了一个我无法解释的有趣发现。在包含的 50 多个 header 中,当我删除 vcl.h 时,我不再收到 W8058 警告。我不明白这一点,因为我认为这个头文件特别是预编译的主要候选者。谁能解释一下?

最佳答案

可能相关的一件事是 BCB 200x 处理默认字符串参数的方式。

像这样声明的函数会给出“无法生成预编译头”消息。

void myFunc(const AnsiString &param="");  

不过改成这样,就可以生成预编译头了。

void myFunc(const AnsiString &param = AnsiString(""));  

关于c++ - 为什么 C++Builder 无法创建预编译头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956727/

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