[英]How to determine which header files to include?
说我有以下(非常简单)的代码。
#include <iostream>
int main() {
std::cout << std::stoi("12");
}
这在g ++和clang上都可以编译。 但是,它无法在MSVC上编译,并出现以下错误:
错误C2039:“ stoi”:不是“ std”的成员
错误C3861:“ stoi”:找不到标识符
我知道std::stoi
是<string>
标头的一部分,大概两个前编译器都包含在<iostream>
,而后者不是。 根据C ++标准[res.on.headers]
C ++标头可以包括其他C ++标头。
对我来说,这基本上说所有三个编译器都是正确的。
当我的一个学生提交作业时,这个问题就出现了,TA标记为未编译。 我当然去修理了。 但是,我想防止将来发生此类事件。 因此,有没有一种方法可以确定应该包括哪些头文件,而无需在每次检查的三个不同编译器上进行编译?
我能想到的唯一方法是确保对于每个std
函数调用,都存在一个适当的include。 但是,如果您现有的代码长数千行,则搜索起来可能很乏味。 有没有更简单/更好的方法来确保交叉编译器的兼容性?
三种编译器的示例: https : //godbolt.org/z/kJhS6U
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.