为什么 CLion (cmake) 不需要包含<string>来构建,而 VS 需要?
Why CLion (cmake) doesn't require include <string> to build when VS does?
为什么以下代码使用CLion构建而没有问题,但使用Visual Studio却失败了?
#include <iostream>
using namespace std;
int main() {
string str;
cout << "Enter your name:" << endl;
cin >> str;
getchar();
return 0;
}
为了使它与Visual Studio一起工作,我必须添加
#include <string>
两者都是使用过时版本的C++(2003)构建的,这是必需的。这是我的CLion 的CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(foo)
set(CMAKE_CXX_FLAGS "--std=c++03")
set(SOURCE_FILES main.cpp)
add_executable(foo ${SOURCE_FILES})
它是CLion中的配置吗?它在CMake吗?
它是CLion中的配置吗?它在CMake吗?也不这是编译器之间的差异。
-drescherjm
允许但不要求标准标头包含其他标准标头。不同的实现具有不同的包含链。依赖于一个特定的依赖关系会使代码不可移植:aways为您使用的标准库的每个元素都包含适当的标准头。
-Igor Tandetnik
有办法强制执行吗?如果缺少这些包含,阿卡会让构建失败吗?
您可以尝试使用Include What You Use,但我不确定它是否可以检查这一点。引用自述:
"包括您使用的内容"意思是:对于在foo.cc(或foo.cpp)中使用的每个符号(类型、函数、变量或宏),foo.cc或foo.h都应该包含一个.h文件,该文件导出该符号的声明。(类似地,对于foo_test.cc,foo_test.c或foo.h都应该包含在内。)显然,在foo.cc中定义的符号被排除在这个要求之外。
相关文章:
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- VS 2017 使用交叉编译器构建 x64 项目
- 与clang++一起使用的VS代码在构建良好的C++文件中显示错误
- VS:在构建/exe中包含资源文件
- SDL2 不是基于 VS 代码构建的
- 自定义构建文件更改不会触发VS 2017中的项目重建
- 构建在VS 2013中找不到平台工具集= 'v141'
- VS 2017 中的 CMake 在构建时不显示构建日志
- 如何使用VS 2015构建Boost 1.44
- VS 2017 构建工具失败,出现错误 MSB4019:找不到导入的项目"D:Microsoft.Cpp.Default.props"
- MFC/DLL中缺少ATL :: CSTRINGT功能,该功能与Clang/vs-2019构建
- 我在 MinGW 和 VS 代码"g++ not recognized as a cmdlet..."时遇到构建错误
- VS Code - 如何在不再次构建的情况下运行未更改的 c++ 文件
- 'cv':构建时不存在具有此名称的命名空间(VS 2015,OpenCV 3.2)
- VS 2015 "Build Dependencies -> Build Customization"总是触发预构建和后期构建
- 为什么 CLion (cmake) 不需要包含<string>来构建,而 VS 需要?
- 谷歌测试预构建VS 2013
- OpenCV 安装 VS 10 无法构建
- OpenCV 2.4.7与FFMpeg支持构建VS 2010(x86)
- 使用 CMake 构建项目,然后向 VS 添加更多库