如果我有一个头文件,其中包含<iostream>
,那么我的main.cpp也包含<iostream>
,这种重复会带来问题吗?如果是,我该如何避免这种情况?
不,这里没有问题
[using.headers/2]
:翻译单元可以按任何顺序([lex.special](包括库头。每个头可以被多次包括,与被完全包括一次没有什么不同,只是包括<cassert>
或<assert.h>
的效果每次都取决于NDEBUG
的词汇当前定义174翻译单元可以包括任何顺序的库头([lex.special](。每个可以被包括一次以上,与被完全包括一次没有任何不同的效果,只是包括<cassert>
或<assert.h>
的效果每次都取决于NDEBUG
的词汇当前定义174
通常使用标头保护或#pragma once
来实现。
我忽略了关于NDEBUG
的警告,因为您不应该使用#define
或#undef
来设置或取消设置,而是在整个构建中集体设置(或不设置(。