预编译头,重新包含文件和智能感知
Precompiled headers, re-including files and Intellisense
我有一个预编译的头文件,其中包含了各种第三方库的include,例如:
#ifndef PRECOMPILED_H
#define PRECOMPILED_H
#include "booststuff.h"
#include "luastuff.h"
#endif
其中booststuff.h和 luaststuff .h是我的项目头文件,只包括各种boost/lua相关的东西,并设置一些类型定义/使用/命名空间别名。
我在visual studio(2012)中以通常的方式设置了预编译的头文件,并使用force include选项将其包含在每个cpp文件中。
在cpp文件中,我也相当小心地#include "booststuff.h",在我实际使用它的地方(我有时禁用预编译头文件来测试这一点)。然而,我最近一直在想这是否是个好主意。所以:
如果我再次包含一个已经包含在预编译头中的文件,会发生什么不好的事情吗(我不明白为什么会这样,但我已经看到了关于头必须包含"以相同的顺序"的事情,而不是真正理解它们是关于什么的)?
它是否影响智能感知(不可用的慢与一个相当小的项目)?我很乐意放弃一些可移植性来获得更好的智能感知,因为我目前不想换平台。
如果每个包含文件中都有#pragma once
,编译器将在第二次和后续尝试包含该文件时完全跳过读取该文件。虽然没有明确说明,但我认为预编译的头文件也会跟踪这些信息。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 我在C++文件中的简单代码块上有 2 个错误。错误 C2059:语法错误:"?"。第二智能感知:预期表达式。怎么了?
- 我可以省略头文件中智能指针的类型参数吗?
- 如何使用智能指针从文件中读取数据块
- 在头文件中定义一个COM智能指针作为成员
- Vim 中带有智能缩进或文件类型缩进的奇怪缩进行为
- 为什么Visual Studio编译器找不到某些头文件,而智能感知可以?
- 智能感知:无法在C++中打开"curl.h"的源代码文件
- 预编译头,重新包含文件和智能感知
- Visual Studio 2015 .cpp文件中的智能感知#作为头文件包含
- 智能指针是否打破了头文件中最小化#include的原则?
- 如何编写智能生成文件
- 如何智能地将多个参数写入hdf5文件