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