预编译头文件,重新包含文件和Intellisense

时间:2013-04-12 16:33:18

标签: c++ visual-studio-2012 intellisense precompiled-headers

我有一个预编译的头文件,其中包含各种第三方库的包含,例如:

#ifndef PRECOMPILED_H
#define PRECOMPILED_H

#include "booststuff.h"
#include "luastuff.h"

#endif

其中 booststuff.h luastuff.h 是我项目中的头文件,其中只包含各种boost / lua相关内容并设置了一些typedefs / usings / namespace别名

我在visual studio(2012)中以通常的方式设置预编译头,并使用force include选项将其包含在每个cpp文件中。

在cpp文件中,我也非常小心#include“booststuff.h”,我实际上也使用它(我有时会禁用预编译头来测试它)。但是,我最近一直想知道这是不是一个好主意。所以:

  • 如果我再次包含一个已经包含在预编译头文件中的文件会有什么不好的事情发生(我不知道为什么会这样,但我已经看到了有关标题的事情必须以相同的顺序包含“ “,并没有真正明白他们在谈论什么?”

  • 它是否会影响Intellisense(对于一个相当小的项目来说速度非常慢)?我很乐意为了更好的Intellisense而放弃一些可移植性,因为我目前不想切换平台。

1 个答案:

答案 0 :(得分:2)

如果每个包含文件中都包含#pragma once,编译器将完全跳过在第二次和随后尝试包含该文件时读取该文件。它没有明确说明,但我假设预编译头也跟踪这些信息。

相关问题