看过了很多专家吐槽目前的大学c语言教学问题多多:
- 教材难懂,消磨了学生的兴趣;
- 环境老旧,都2020了还有在用VC6甚至TurboC 2.0,语法不规范。
轮到自己上课,心想可不能再继续这样的c语言课堂。
1. 教材选择
先从教材的选择开始, 网上大家评价较好的有两本:
第1本是日本的经典c语言教材,第二本据说是普林斯顿大学的c语言参考教材。
考虑到第2本618页的厚度,为了避免把同学们吓住,就选了第一本。
两本都比较贵,但是比起用完就扔的垃圾教材,毕业多年后再翻出来看的经典教材,绝对物有所值! 相信同学们会理解的。
2. 编程环境选择的原则
选定教材,编程环境是最重要的。选择原则:
- 编译器不能太老旧,vc6和TC2就算了。至少c99标准完美支持吧。
- 不能太傻瓜化,VS2015、VS2017/19啥的,轻松占几十G空间不说,学生还搞不懂编译的过程。
- 最好是业界在用的,有一些教学环境也不错(比如:DevCpp,codeblocks)但公司里哪见过有人用?
这么一筛选,也就只能从 VS201x,VSCode,Clion 这几个中选了,那就用最轻量的 VSCode吧!
编译器也只有这三个: cl,gcc,clang。 既然不装vs大块头,那windows下gcc最好用。
2.1 下载安装gcc编译器: Mingw-w64
MinGW 的全称是:Minimalist GNU on Windows 。
它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。
MinGW有两个发行版:MinGW-w64 与 MinGW 。区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。
正因为如此,果断采用 MinGW-w64。
文件清单:
x86_64-posix-sjlj
x86_64-posix-seh
x86_64-win32-sjlj
x86_64-win32-seh
i686-posix-sjlj
i686-posix-dwarf
i686-win32-sjlj
i686-win32-dwarf
作为学生现在的电脑软硬件水平,推荐下载: x86_64-posix-seh
- 释义1:
x86_64: 简称X64,64位操作系统。
i686: 32位操作系统 (i386的子集),差不多奔腾2(1997年5月)之后的CPU都是可以用的;
- 释义2:
DWARF:一种带调试信息(DWARF- 2(DW2)EH)的包, 所以比一般的包尺寸大,仅支持32位系统
SJLJ:跨平台,支持32,64位系统,缺点是:运行速度稍慢,但是可以在没有使用GCC编译的代码或没有调用堆栈的代码上工作
SEH: 调用系统机制处理异常,支持32,64位系统。(Structured Exception Handling)Windows使用自己的异常处理机制。
- 释义3:
posix: 启用了C++ 11 多线程特性
win32: 未启用 (从时间线上正在尝试也启用部分 Treading)
验证: 打开cmd黑窗口, 分别敲命令: gcc, g++, gdb, 分别看看这几个命令是否输出正确.
2.2 下载安装VSCode编辑器
注意选择好 x64 或者 x86,
有两个.exe的是安装包(需要系统权限,不需要系统权限安装),另外.zip那个是绿色解压就能用的.
安装插件: c/c++ tools, chinese简体中文语言包, code-runner
具体步骤省略, 若连不上微软marketplace,那就FQ下载visx包离线安装.
2.3 配置VSCode的c语言环境
总结一下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/Lang/mingw64/include",
"C:/Lang/mingw64/x86_64-w64-mingw32/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "8.1",
"compilerPath": "C:/Lang/mingw64/bin/gcc.exe",
"cStandard": "c99",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
3)第二个配置文件: tasks.json, 用于定义编译任务. 以下代码定义了两个编译任务:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C: gcc.exe build active file",
"command": "gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c99"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"type": "shell",
"label": "C: gcc.exe build ALL *.c files",
"command": "gcc.exe",
"args": [
"-g",
"${workspaceFolder}\\*.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c99"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}
4)第3个配置文件: launch.json ,用于配置调试相关任务. 代码如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\Lang\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C: gcc.exe build active file"
}
]
}
5)第4个配置文件: settings.json , 是编辑器本身的一些配置. 这里我配置了: 启动cmd时直接chcp 65001切换到utf8环境,还有code-runner的c语言配置:
{
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe", //默认的shell环境:cmd
"terminal.integrated.automationShell.windows": "C:\\Windows\\System32\\cmd.exe", //缺少此行, 在65001环境下编译可能会提示: 无效的参数 -/d.
//"terminal.integrated.shellArgs.windows": ["/K", "chcp 65001>nul"], //打开cmd时自动切换到utf-8环境, 避免中文乱码. 不输出chcp回显
"terminal.integrated.shellArgs.windows": ["/K", "chcp 65001>nul"], //打开cmd时自动切换到utf-8环境, 避免中文乱码. 有 65001 代码页回显
"code-runner.executorMap": {
"javascript": "node",
"php": "C:\\php\\php.exe",
"python": "python",
"perl": "perl",
"ruby": "C:\\Ruby23-x64\\bin\\ruby.exe",
"go": "go run",
"html": "\"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
},
"code-runner.defaultLanguage": "c"
}
安装好 vscode 及插件, 然后拷贝文件到两种配置位置:
- 拷贝4个json文件, 扔到工作目录(自己写代码的目录)的 .vscode 文件夹下[推荐!]
- 或后3个json文件, 扔到用户的个人文件夹下: C:\Users\zhw\AppData\Roaming\Code\User\
搞定!
为了方便学生, 上课前将上述4个文件打个包,直接让学生下载即可:
Original: https://www.cnblogs.com/zhw618/p/13353903.html
Author: zhw618
Title: C语言课堂–现代编译环境搭建[2020年7月]
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581796/
转载文章受原作者版权保护。转载请注明原作者出处!