[英]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.