如果在构建中多次处理源文件,是否有办法抛出错误?我知道你可以使用#pragma once
和#ifndef
类型的东西但只保护它不被包含在一个编译单元中一次。我想确保它在整个构建中只包含/编译一次,在Visual Studio的解决方案中有多个项目。
我知道普通的.cpp文件通常只处理一次。但是如果其他文件#include
是.cpp文件,它可以被多次处理(我知道这不是典型的,但它最好地解释了这种情况)。所以,我试图防止意外的多重包含文件。
答案 0 :(得分:0)
所以,我试图防止意外的多重包含文件。
至少您的链接器会抛出有关ODR规则违规的错误消息,不用担心。
但如果其他文件#included .cpp文件,则可以多次处理
是的,它会被多次处理,并提供多个定义,这些定义分布在不能再链接在一起的翻译单元上。
答案 1 :(得分:0)
使用 COUNTER 宏怎么样?不确定跨项目的行为
#if __COUNTER__ > 0
#error I was there already
#endif