c++ 采坑

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-10 07:04:38

2020年6月10日17:18:18

 

vs studio版本 vs2019,boost 是1.71版本

中文官方文档
https://docs.microsoft.com/zh-cn/cpp/?view=vs-2019#pivot=workloads&panel=workloads1

1,vs studio 设置c++项目的版本
右击项目->属性->C/C++->语言->C++ 语言标准 。 
当设置为默认值(应该即为 IOS2014 C++ 14 标准)时,_MSVC_LANG值为 201402L,当其值设置为:IOS2014 C++ 14 标准时,_MSVC_LANG值为 201703L。修改配置后,程序恢复正常。

2,vs studio设置 boost库
先编译好编译boost
项目——>属性——>选择VC++目录,在包含目录 和 库目录添加以上2个路径
包含目录加上 上 D:\boost_1_71_0\
库目录加上 D:\boost_1_71_0\stage\lib

或可以新建一个系统环境变量BOOST_DIR,值为E:\program\boost_1_71_0。
在path系统环境变量中添加:%BOOST_DIR%;
VC++包含目录中添加: %BOOST_DIR%;
VC++库目录中添加: %BOOST_DIR%\stage\lib;

3,错误    LNK2005    _main 已经在 tt.obj 中定义
错误    LNK1169    找到一个或多个多重定义的符号
一个项目只能有一个main()函数,不然编译会出错

4,#pragmaonce这个宏有什么作用?
为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。
在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。

5,常用快捷键
ctrl+k,c 注释选中行
ctrl+k,u 取消对选中行的注释
全局 格式化代码 快捷键ctrl+k,在同时按ctrl+d
选中行 ctrl+k, ctrl+f

快速生成代码—–连续两次Tab键: 
例如: 
快速生成for循环—使用方法 代码中输入for,然后连续按两次Tab键 
快速生成try—catch—使用方法 代码中输入try,然后连续按两次Tab键

Peek View 快速查看方法/类定义—–Alt +F12:
方法的展开和折叠—–Ctrl+M+P/Ctrl+M+O:
    
重写父类的方法—–override +Space(空格):
设置快捷键 工具----选项------环境-----键盘

 6, 在vs studio里面编写 c项目代码
 https://blog.csdn.net/dingyc_ee/article/details/98075146
 
 7,vs studio在c++项目里添加文件
 https://blog.csdn.net/mayue_web/article/details/84030056
 点击Source Files ->add->existing Items ,选择刚才移除的c/c++文件就可以了。
 右键项目->添加->现有项,选择需要添加的文件
 
 8,添加源码目录
 https://blog.csdn.net/Leichelle/article/details/95049325
 
 9,hpp头文件与h头文件的区别
 https://blog.csdn.net/follow_blast/article/details/81706698
 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。
而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,
采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。
 
 10,This function or variable may be unsafe
 _CRT_SECURE_NO_WARNINGS
 https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html
 
 11,C4996    'std::codecvt_utf8<wchar_t,1114111,(std::codecvt_mode)0>': warning STL4017: std::wbuffer_convert, 
 std::wstring_convert, and the <codecvt> header (containing std::codecvt_mode, std::codecvt_utf8, std::codecvt_utf16, 
 and std::codecvt_utf8_utf16) are deprecated in C++17. (The std::codecvt class template is NOT deprecated.) 
 The C++ Standard doesn't provide equivalent non-deprecated functionality; 
 consider using MultiByteToWideChar() and WideCharToMultiByte() from <Windows.h> instead. 
 You can define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge 
 that you have received this warning.    cinatra    D:\cpp\cinatra\cinatra\include\cinatra\url_encode_decode.hpp    52    

在url_encode_decode.hpp上加入#pragma warning(disable:4996),抑制一下警告就ok了
注意不管是调试在x86,还是x64都是没问题的,如果是在linux是哪个运行注意新建一个linux c++测试下先

 

 

vs studio版本 vs2019,boost 是1.71版本
 
中文官方文档
https://docs.microsoft.com/zh-cn/cpp/?view=vs-2019#pivot=workloads&panel=workloads1
 
1,vs studio 设置c++项目的版本
右击项目->属性->C/C++->语言->C++ 语言标准 。 
当设置为默认值(应该即为 IOS2014C++14 标准)时,_MSVC_LANG值为 201402L,当其值设置为:IOS2014C++14 标准时,_MSVC_LANG值为 201703L。修改配置后,程序恢复正常。
 
2,vs studio设置 boost库
先编译好编译boost
项目——>属性——>选择VC++目录,在包含目录 和 库目录添加以上2个路径
包含目录加上 上 D:\boost_1_71_0\
库目录加上 D:\boost_1_71_0\stage\lib
 
或可以新建一个系统环境变量BOOST_DIR,值为E:\program\boost_1_71_0。
在path系统环境变量中添加:%BOOST_DIR%
VC++包含目录中添加:%BOOST_DIR%;
VC++库目录中添加:%BOOST_DIR%\stage\lib;
 
3,错误	LNK2005	_main 已经在 tt.obj 中定义
错误	LNK1169	找到一个或多个多重定义的符号
一个项目只能有一个main()函数,不然编译会出错
 
4,#pragmaonce这个宏有什么作用?
为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。
在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。
 
5,常用快捷键
ctrl+k,c 注释选中行
ctrl+k,u 取消对选中行的注释
全局 格式化代码 快捷键ctrl+k,在同时按ctrl+d
选中行 ctrl+k, ctrl+f
 
快速生成代码—–连续两次Tab键: 
例如: 
快速生成for循环—使用方法 代码中输入for,然后连续按两次Tab键 
快速生成try—catch—使用方法 代码中输入try,然后连续按两次Tab键
 
Peek View 快速查看方法/类定义—–Alt +F12:
方法的展开和折叠—–Ctrl+M+P/Ctrl+M+O:
重写父类的方法—–override +Space(空格):
设置快捷键 工具----选项------环境-----键盘
 
6, 在vs studio里面编写 c项目代码
 https://blog.csdn.net/dingyc_ee/article/details/98075146
7,vs studio在c++项目里添加文件
 https://blog.csdn.net/mayue_web/article/details/84030056
 点击Source Files ->add->existing Items ,选择刚才移除的c/c++文件就可以了。
 右键项目->添加->现有项,选择需要添加的文件
8,添加源码目录
 https://blog.csdn.net/Leichelle/article/details/95049325
9,hpp头文件与h头文件的区别
 https://blog.csdn.net/follow_blast/article/details/81706698
 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。
而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,
采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。
10,This function or variable may be unsafe
 _CRT_SECURE_NO_WARNINGS
 https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html
11C4996'std::codecvt_utf8<wchar_t,1114111,(std::codecvt_mode)0>': warning STL4017: std::wbuffer_convert,
 std::wstring_convert, and the <codecvt>header(containing std::codecvt_mode, std::codecvt_utf8, std::codecvt_utf16,
 and std::codecvt_utf8_utf16) are deprecated inC++17.(The std::codecvt classtemplate is NOT deprecated.)
 The C++ Standard doesn't provide equivalent non-deprecated functionality;
 consider using MultiByteToWideChar() and WideCharToMultiByte()from<Windows.h> instead.
 You can define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING or _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge 
 that you have received this warning.	cinatra	D:\cpp\cinatra\cinatra\include\cinatra\url_encode_decode.hpp	52
 
在url_encode_decode.hpp上加入#pragma warning(disable:4996),抑制一下警告就ok了
注意不管是调试在x86,还是x64都是没问题的,如果是在linux是哪个运行注意新建一个linux c++测试下先
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!