在 ifdef 中包含预编译的头文件
Posted
技术标签:
【中文标题】在 ifdef 中包含预编译的头文件【英文标题】:Include precompiled header in ifdef 【发布时间】:2017-05-15 11:28:44 【问题描述】:我有一个跨平台项目,我想在 Windows 上使用预编译头文件(在这种情况下它非常重要),而在 Linux 上我不想要它。所以我想要这样的东西:
#ifdef _WIN32
#include "precompiled.h"
#endif //#ifdef WIN32
当我在 Windows 上构建时,我收到了这个烦人的错误,声称:
PCH warning: header stop cannot be in a macro or #if block. An intellisense pch was not generated
有什么办法可以解决这个问题吗?
提前致谢。
【问题讨论】:
不确定,但似乎是警告,而不是错误 为什么要在 Windows 上(它“非常重要”)而不是在 Linux 上?很奇怪。 这个故事有点长,但问题是我真的需要这个预编译的头文件包含在 Windows 构建中,而不是在 Linux 中使用。 只需将#ifdef 移到.h 文件中。 【参考方案1】:我已经遇到了这个问题,对我来说,这两个选项之一对我有用。
1) 如果您在文件开头添加#pragma once
(甚至在#ifndef _WIN32 标头保护之前)。
2) 或者你可以在你的头文件中添加这个 skecth:
#ifndef MYHEADER_H
#define MYHEADER_H
... contents of myheader.h
#endif /* MYHEADER_H */
这将保证您的标头只编译一次,并且此警告将消失(至少对我而言)。
希望它有效!
【讨论】:
你没有抓住重点。#ifdef _WIN32
在 cpp 文件中(有条件地包含 pch)。以上是关于在 ifdef 中包含预编译的头文件的主要内容,如果未能解决你的问题,请参考以下文章