Clion
- 安装Visual Studio社区版,官网: https://visualstudio.microsoft.com/zh-hans/vs/, 选择安装c++桌面开发组件。安装目录:
C:\MicrosoftVisualStudio\2022\Community
- 安装Clion:https://www.jetbrains.com/clion/,新建项目或选择文件夹后,file,settings,build,toochains,添加 Visual Studio
- Toolset:
C:\MicrosoftVisualStudio\2022\Community
,amd64,Platform 留空 - CMake,debugger用默认
- Toolset:
字符编码
- 文件,设置,编辑器,文件编码,设置: 全局编码、项目编码、属性文件默认编码为 UTF-8
- 源文件编码:UTF-8
CLion + MSVC 下的字符编码问题
参考: https://www.cnblogs.com/Chary/p/13608011.html
类似报错: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
原因: CLion 默认使用 UTF-8 编码,MSVC 继承了 MS 家族的一贯传统,除非明确指定否则要么 UTF-8 with BOM 要么当前代码页,参考: https://docs.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-170
处理方式: 修改 CMakeList.txt,在 add_executable 之前添加:
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
运行
- 设置:在外部控制台中运行,但这样会自动关闭cmd窗口,需要修改设置
- 设置
- 可执行文件: C:\Windows\System32\cmd.exe
- 工作目录:项目的debug目录
- 程序实参:
/c chcp 65001 & cls & c_program.exe & echo: & pause
- /c 是执行完dir命令后关闭命令窗口。
- c_program.exe 为工作目录下的可执行文件名
- chcp 65001:命令行使用 utf-8编码
- cls:清屏
- pause:按任意键继续
&
表示顺序执行命令,不论相邻的命令是否执行成功echo:
输出空行
使用clang替换msvc
参考: https://www.jetbrains.com/help/clion/quick-tutorial-on-configuring-clion-on-windows.html#clang-cl,从 https://github.com/llvm/llvm-project/releases 下载LLVM,安装到 C:\LLVM
Clion 的工具链 VS环境下,C和C++编译器设置为 C:\LLVM\bin\clang-cl.exe
.
使用clang时,不需要修改 CMakeList.txt 处理utf-8.
DevC++
1.安装 DevC++
- 版本5.11 https://sourceforge.net/projects/orwelldevcpp/files/latest/download
- 安装选项
- Installer Language: English
- 安装位置不要选默认位置,可以选择类似
D:\Dev-Cpp
, 否则会导致 AStyle 格式化功能失效. 功能失效后只能用管理员权限运行 DevC++才能使用 AStyle 功能 - Select your language:简体中文
- 更换 TDM-GCC到最新64位版本
- 下载最新版本: https://jmeubank.github.io/tdm-gcc/download/, 如
tdm64-gcc-10.3.0-2.exe
- 清空文件夹
D:\Dev-Cpp\MinGW64
, 安装64位, 安装下载的版本到文件夹 `D:\Dev-Cpp\MinGW64\ - 工具, 编译器选项,点两个加号的按钮
寻找并自动配置编译器
,确定 - 重启 DevC++, 需要设置bin二进制目录路径: 工具,编译选项,目录,二进制:
D:\Dev-Cpp\MinGW64\bin
- 下载最新版本: https://jmeubank.github.io/tdm-gcc/download/, 如
2.调试
- 编译器选择 Debug, 而不是 Release
- 需要设置bin二进制目录路径: 工具,编译选项,目录,二进制:
D:\Dev-Cpp\MinGW64\bin
- F5
VisualStudio下的C语言环境配置
这里假设 VS版本为2019社区版.
1.安装
下载安装: https://docs.microsoft.com/zh-cn/visualstudio/, 安装时选择 "使用C++的桌面开发", 勾选英文语言包.
- 选择创建新项目
- 登录: 可以用github登录
- 选择空项目,单击下一步
- 填写项目名称(生成的文件夹名称和工程名都是这个),我这里填入CProject,保存位置选择为
d:\CProject
,勾选解决方案和项目放在同一目录中,便于调试。此时应该在工程建立ok后,生成D:\CProject\CProject
文件夹 - 在左侧的解决方案目录下,选中源文件,右键单击,选择添加->新建项. 如果左侧没有解决资源管理器,或者不小心关掉了,单击视图->项目资源管理器就可以调出来
- 选择C++文件(不管是写c还是c++)
- 底下名称的后缀是.cpp,我们写c代码时需要修改为.c
- 选中C++文件,名称修改为hello.c,点击添加, 编写源代码
- 按Ctrl+F5直接编译运行, 生成的exe并不是 hello.exe, 而是
D:\CProject\CProject\Debug\CProject.exe
2.设置
- 使用scanf函数,可以这样设置: 右击项目——属性——C/C++——预处理器——预处理器定义中增加
_CRT_SECURE_NO_WARNINGS
,然后点确定,退出。 - 自动换行: 工具,选项,文本编辑器,所有语言,常规,自动换行
- 设置为64位, 否则有些第三方库有问题: 项目属性,配置属性,C/C++,语言,平台,x64
- c语言标准:项目属性,配置属性,C/C++,语言,C语言标准,c17
备注:
- scanf()在读取时不检查边界,所以可能会造成内存泄露,所以vs提供了scanf_s()来替代,在调用时,必须提供给scanf_s一个数字以表明读取多少位字符,用法为
scanf_s("%c",&letter,sizeof(letter))
,否则,即使Ctrl+F7和Ctrl+F5通过了,程序的运行结果也可能与自己所期望大相径庭的。 - vs 默认仅支持c89 和部分c99, 参考: https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version?view=msvc-160
3.快捷键
- 代码格式化 CTRL + K + D
- 注释: CTRL + K + C
- 取消注释: CTRL + K + U
- 删除光标所在的整行: CTRL + L, 实际是剪切了该行
4.万能头文件 <bits\stdc++.h>
最新gcc版本参考: https://gcc.gnu.org/onlinedocs/
比如11.1对应的文件 https://gcc.gnu.org/onlinedocs/gcc-11.1.0/libstdc++/api/files.html,stdc++.h
文件的路径: Files,File List,stdc++.h
, 对应源文件: https://gcc.gnu.org/onlinedocs/gcc-11.1.0/libstdc++/api/a00824_source.html
- 找到如下文件夹
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include
- 创建文件夹 bits,并在该文件夹下创建文件
stdc++.h
- 将上述gcc文件的内容复制到文件
stdc++.h
中 - 引用方式
#include <bits/stdc++.h>
万能头文件会增加编译工作量
4. utf-8 多语言支持
- 1.永久性修改page code 到 65001:
- 修改系统cmd: 修改注册表的
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
的 CodePage然后选择十进制, 设置为 65001, 默认值为936. - 修改 visualstudio 调试控制台:
HKEY_CURRENT_USER\Console\C:_Program Files (x86)_Microsoft Visual Studio_2019_Community_Common7_IDE_CommonExtensions_Platform_Debugger_VsDebugConsole.exe
的 CodePage然后选择十进制, 设置为 65001, 默认值为936.
- 修改系统cmd: 修改注册表的
- 2.参考: 这里
- Open the project Property Pages dialog box. For more information, see Set C++ compiler and build properties in Visual Studio.
- Select the Configuration Properties > C/C++ > Command Line property page.
- In Additional Options, add the /utf-8 option to specify your preferred encoding.
- Choose OK to save your changes.
- 3.安装扩展:Force UTF-8 (no BOM)
不要做如下操作, 会导致部分软件无法启动运行或代码界面为乱码. windows,设置,时间和语言,语言,管理语言设置,更改系统区域设置,选中提供全球语言设置, 重启系统
windows环境下: notepad++
参考: 【Notepad++】用 Notepad++ 编译 C/C++
- 安装 MinGW, 为了使用gcc. bin目录加到path
- 安裝 NppExec插件,安裝后到“插件” -> NppExec -> execute, 輸入如下文本,保存為 cplusplusScript:
传统命令行:
NPP_SAVE
cmd /k & pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & ECHO. & PAUSE & EXIT
NPP_CONSOLE 0
在notepad++ 之外运行cmd:
```txt
NPP_SAVE
NPP_RUN cmd /k & pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & ECHO. & PAUSE & EXIT
NPP_CONSOLE 0
使用 powershell, &&
需要替换为分号等, 如果加上NPP_CONSOLE 0
不会在 Notepad++上显示:
NPP_SAVE
NPP_RUN powershell ; pushd "$(CURRENT_DIRECTORY)" ; g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" ; ".\$(NAME_PART)".exe ; echo `n; Write-Host "Press any key to continue" -NoNewline;$null = [Console]::ReadKey('?'); EXIT;
NPP_CONSOLE 0
- 设置快捷键, 打开插件->NppExec -> advanced option, 先点place to the Macros submenu, 然后点associated scripts, 找到你之前添加的"cplusplusScript"然后add。 关闭重启notepad++,然后到“设置” -> 管理快捷键 -> 到plugin commands里找到你创建的那个"cplusplusScript",给一个你喜欢的快捷键就行了。可以删除F11的全屏快捷键, 设置为编译运行C++的快捷键
- 设置console字的颜色,到插件-> NppExec里有个advanced options, 可以修改不同字的颜色
- 命令行说明
cmd /k
:打开 cmd 控制台,运行完程序让其停留而不自动关闭。pushd "$(CURRENT_DIRECTORY)"
:将工作路径更换到源文件所在的路径,例如'pushd E:\kkk'
相当于 cmd 中先e:再cd kkk,这条命令在源代码要调用同目录文件而只写了相对路径时尤为重要。因为 Notepad++ 的默认工作路径是它自己的安装路径。g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)"
:调用环境变量中的编译器 g++.exe 来将源代码编译成同名 exe 文件并输出到相同路径。"$(NAME_PART)".exe
:运行源代码编译出的可执行文件。ECHO.
: 换行- PAUSE:暂停,提示“按任意键继续”,配合下一条命令实现“按任意键关闭”的效果,两者都没有的话程序运行完就会秒关。
- EXIT:关闭 cmd 控制台,没有的话按任意键会退到 cmd 命令台,等待输入下一条命令。
命令参数:
$(CURRENT_DIRECTORY)代表文件所在目录的路径。
$(NAME_PART)表示该文件无后缀部分的文件名。
$(FULL_CURRENT_PATH)代表当前完整的文件路径。
双引号(半角):用于防止目录或文件名中含空格的情况。
“&&”和“&”:前者表示上一条命令正常执行完再执行下一条命令,非正常则不执行下一条;后者无顾虑。例如一分为六后的后两条子命令,表示不管源代码编译、运行是否成功,都会出现“按任意键继续”字样,并且按任意键后关闭 cmd 控制台。
格式化插件,最新版本1.2: https://sourceforge.net/projects/coolformat/files/Plugins/NPP/, 文档: https://github.com/akof1314/CoolFormat/wiki
下载后解压到Notepad++下的plugin文件夹即可,重启后可在插件查看.
解压后的目录结构:
- C:\Program Files\Notepad++\plugins\CoolFormatNppPlugin\CoolFormatNppPlugin.dll
- C:\Program Files\Notepad++\plugins\CoolFormatNppPlugin\CoolFormatLib\cf_windows_x64\CoolFormat.exe
- C:\Program Files\Notepad++\plugins\CoolFormatNppPlugin\CoolFormatLib\cf_windows_x64\CoolFormatLib.dll
自动完成:设置,首选项,自动完成