草庐IT

c++ - Objective-C++ 预编译头文件

我正在使用C++库(它恰好在iPad应用程序中,但我不确定这会有什么不同)并且真的很想预编译header以加快构建速度,但是xCode似乎通过C编译器而不是C++编译器运行预编译的头文件。有没有办法让它使用正确的编译器?我已经将所有源文件从.m更改为.mm。 最佳答案 根据Xcodedocs,为每种语言变体生成一个编译头文件。因此,如果您将#include与保护宏括起来,它应该可以工作,即#ifdefined__cplusplus#include"mycplusplusheader.h"#endif

c++ - 预编译头如何减少编译时间

我使用预编译header已有一段时间,并被告知(并看到)它们如何减少编译时间。但我真的很想知道发生了什么(幕后),这样可以加快我的编译速度。因为据我所知,在.cpp中添加未使用的include会减慢编译时间,并且头文件可能包含大量未使用的.cpp头文件。那么预编译头如何让我的编译速度更快呢? 最佳答案 来自http://gamesfromwithin.com/the-care-and-feeding-of-pre-compiled-headers谢谢(@Pablo)AC++compileroperatesononecompilati

c++ - 预编译头设计问题

我有使用预编译header的代码。(以前是别人做的)在其中,它们包括几个.h文件。如果我有使用当前不在现有预编译头文件中的通用.h文件的类,将它们扔进去会有任何真正的好处吗?也许是编译速度,但我认为它也会稍微清理一下类/header?预编译header的注意事项是什么? 最佳答案 不要通过从其他源文件中删除这些header来依赖预编译header中包含的header来进行“代码清理”。如果您想停止使用PCH,这将是一场噩梦。你总是希望你的依赖关系在每个源文件中都是明确的。只需将它们包含在这两个地方——这没有任何危害(假设您有适当的i

c++ - gcc 预编译 header 与 -c 选项的奇怪行为

短篇小说:我无法使用gcc-c选项使预编译头文件正常工作。长话短说:伙计们,我在Linux上使用gcc-4.4.1,在一个非常大的项目中尝试预编译头文件之前,我决定在简单的程序上测试它们。他们“有点工作”,但我对结果不满意,我确定我的设置有问题。首先,我写了一个简单的程序(main.cpp)来测试它们是否有效:#include#include#includeintmain(){return0;}然后我创建了预编译头文件pre.h(在同一个目录)如下:#include#include#include...并编译它:$g++-I.pre.h(创建了pre.h.gch)之后我测量了使用和不使

c++ - Visual Studio 2010 中的多进程构建 : Worth it?

我已经开始使用VS2010测试我们的C++软件,构建时间非常糟糕(30-45分钟,大约是VS2005时间的两倍)。我一直在阅读有关多进程编译的/MP开关。不幸的是,它与我们经常使用的一些功能不兼容,例如#import、增量编译和预编译header。您是否有一个类似的项目,您在关闭预编译头文件之类的东西后尝试了/MP开关?您获得更快的构建了吗?我的机器在具有4GBRAM和快速SSD存储的4核机器上运行64位Windows7。病毒扫描程序已禁用,软件环境非常简单。编辑:Martin和jdehaan指出MP与预编译header并非不兼容。详情为here. 最佳答案

c++ - VS2008 win32 project defaults - 移除默认的预编译头文件

我已经尝试过每一个选项,试图找到一种方法让IDE让我创建一个没有预编译头文件的新win32pject。我已经阅读了这个论坛上的每个线程,其中包含“precpmpiledheaders”字样,我得到的最接近的是:PrecompiledHeaders使用2008pro(不明确,虽然行为似乎相似)我去:文件->新建->项目这将打开“新建项目”对话框,我在其中选择“VisualC++Win32项目”,输入名称并单击“确定”。然后我得到“Win32应用程序向导”。将应用程序类型设置为“Windows应用程序”后,应用程序设置Pane将不允许我取消选中预编译的header。复选框变灰。如果我选择“

c++ - Visual Studio 2015 更新 1,clang 错误

在我的项目(VisualStudio2015Update1)中尝试将新的clang与VisualCodegen结合使用时,出现以下错误:clang.exe:error:cannotspecify-owhengeneratingmultipleoutputfiles这只是一个新创建的项目,带有自动生成的main。我真的不知道该怎么办。感谢任何帮助。 最佳答案 不是很清楚您在做什么,但很明显您没有在跨平台节点中使用Clang项目模板之一。我可以通过使用Win32>Win32项目模板并将项目的平台工具集选择更改为“Clang3.7”来重现

c++ - 在预编译头文件中实例化模板会减少编译时间吗?

例子:假设我在我的预编译头文件中包含:#include由于vector的一些实例,例如std::vector、std::vector等在我的项目中经常使用,如果我像这样在预编译头文件中实例化它们是否会减少编译时间:#includetemplateclassstd::vector;templateclassstd::vector;更进一步,将虚拟函数添加到使用一些函数的预编译头是否有意义:namespacepch_detail{inlineautofunc(){auto&&v=std::vector{};v.size();v.begin();v.front();}}我非常不确定翻译单元和

c++ - 为什么构建没有预编译头文件的 DLL 在使用时会出现奇怪的错误?

总结:今天我发现在构建一个没有预编译头文件的DLL时,当您尝试使用它时会出现一个奇怪的错误。当禁用预编译header时,构建DLL会很顺利。但是,一旦附加了DLL(编译时或运行时),它就会导致错误“参数无效”。两种情况的实际错误代码都不同。附加编译时时会弹出错误代码为0xc000000d的对话框,调用LoadLibrary()时会返回NULL指针,而GetLastError()会返回0x57.编辑:我发现当增量链接被禁用时问题就消失了。在运行附加到DLL编译时的客户端时,我以某种方式错过了VisualStudio显示的以下错误:'TestClient.exe':Loaded'D:\Pr

c++ - GCC 和预编译 header

看完thisnicearticle(预编译头的护理和供给),我对这些在现实生活中如何实际工作有一些疑问。更具体地说,我如何知道我需要在以下场景中触发预编译头的重建:我决定在我的一个.cpp文件中#define一些东西,它改变了预处理器解释一些已经包含在我的预编译头文件中的头文件的方式我在我的一个.cpp文件中包含另一个header,它#define是一个特定的预处理器指令,它改变了预处理器解释已包含在预编译header中的header的方式更糟糕的是,当某些header#include其他header时,之前的问题可能会递归发生预编译header的使用是否应该强制执行某种限制性编码风格