C语言和C++语言编程环境

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 用默认

字符编码

  • 文件,设置,编辑器,文件编码,设置:全局编码、项目编码、属性文件默认编码为 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

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

备注:

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.
  • 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

自动完成: 设置, 首选项, 自动完成

评论(没有评论)