繁体   English   中英

如何确保文件在构建中仅处理一次

[英]How to ensure a file is only processed once in a build

如果源文件在构建中被多次处理,是否有引发错误的方法? 我知道您可以使用#pragma once#ifndef类型的东西,但这只能防止它一次被包含在单个编译单元中。 我想确保在Visual Studio解决方案中的多个项目的整个构建中,仅将其包含/编译一次。

我了解普通的.cpp文件通常只处理一次。 但是,如果其他文件#include包含了.cpp文件,则可以多次处理该文件(我知道这不是典型的情况,但可以最好地说明这种情况)。 因此,我正在尝试防止文件的意外多个包含。

因此,我正在尝试防止文件的意外多个包含。

至少您的链接器将引发有关ODR规则违规的错误消息,请放心。

但是,如果其他文件#包括该.cpp文件,则可以多次处理该文件

是的,它将被处理多次,并提供多个定义,这些定义分布在无法再链接在一起的翻译单元上。

使用COUNTER宏呢? 不确定项目间的行为

#if __COUNTER__ > 0
#error I was there already
#endif

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM