我一直在为这个问题尝试不同的搜索词,我只是在谷歌和 stackoverflow 上都发现了噪音。如果我使用 C++ 的标准库 (std) 编写代码,是否基本上可以保证为 Windows、Mac 和 Linux 编译(并希望按预期工作)?
问问题
3324 次
3 回答
9
代码保证在所有符合标准的编译器/平台上兼容,但重要的是要注意 ABI 不是,即您可能不认为链接从不同编译器/版本/平台创建的二进制文件是安全的。
实际上,这意味着不要将 STL 对象string
从vector
一个库传递到另一个库,除非您在完全相同的时间以完全相同的方式编译两者。这在传递指向动态数据的指针时尤其重要:shared_ptr
除非您能满足上述保证,否则您不能在库 API 中使用,您需要使用常规指针。
于 2013-02-06T04:58:18.643 回答
1
争论是任何不符合 STL 的东西都不符合 C++,因此,在一方面,是的,所有 STL 都是跨平台的。
但是,请注意,允许对 STL 的某些部分进行实现定义。例如见type_info::name
于 2018-01-08T23:28:06.727 回答