1. helloworld程序:
#include <stdio.h> // #:关键标识符,表示引入头文件;include:引入头文件关键字
// stdio.h : 系统标准输入、输出库对应的头文件。给printf函数服务。
// <>:表示使用系统库函数。 “”:表示用户自定义库函数
int main(void) // int: 函数返回值是整型数据。 main:函数名。程序唯一的入口。必须有,且只有一次
// void: 函数调用无需传参
{ // 函数体 起始位置
printf("Hello World!\n"); //将"hello world"写道屏幕上。 \n:回车换行
system("pause"); //暂停
return 0; // 返回当前函数调用—退出程序 0:要和main函数的返回值一一对应
} // 函数体 结束位置
解决提示窗一闪而过:
-
通过 system()函数解决:
在 return 0;之前 添加 system(“pause”); 函数调用。 -
借助VS工具解决:
在项目上 —》右键 —》 属性 —》 配置属性 —》 连接器 —》 系统 —》 子系统
—》 在下拉框中选择“控制台 (/SUBSYSTEM:CONSOLE)”
System函数:
执行系统命令。如: pause、cmd、calc、mspaint、notepad…
system(“cmd”); system(“calc”);
清屏命令:cls; system(“cls”);
两种编写 helloworld 的方式:
-
借助VS编辑工具编写。
创建项目 --》 创建 helloworld.c 源文件 --》 写 helloworld程序 --》Ctrl + F5 执行。 -
借助记事本、gcc编译工具编写。
gcc编译工具的环境变量配置:
在QT的安装目录中找 gcc.exe 目录位置。例如: C:\Qt\Qt5.5.0\Tools\mingw492_32\bin
我的电脑 --》属性 --》 高级系统设置 --》 环境变量 --》系统环境变量 --》 path --》 将gcc.exe 目录位置写入到 path的值中。使用记事本创建 helloworld.c 文件
在记事本中写 helloworld 程序 --》 使用gcc编译工具 ,在记事本写的 helloworld.c 所在目录中,执行 gcc helloworld.c -o myhello.exe
–》 在终端(黑窗口)中,运行 : myhello.exe
小技巧
1.选中路径,输入cmd +enter,可以直接打开小黑窗
2.单行注释使用斜杠// (" \" 叫做反斜杠 )
3.多行注释:/* 注释内容 */
4.不允许嵌套使用。 多行中可嵌套单行。d.c 所在目录中,执行 gcc helloworld.c -o myhello.exe
–》 在终端(黑窗口)中,运行 : myhello.exe
2. gcc编译4步骤:【重点】
1. 预处理 -E xxx.i 预处理文件
gcc -E xxx.c -o xxx.i
1) 头文件展开。 — 不检查语法错误。 可以展开任意文件。
2)宏定义替换。 — 将宏名替换为宏值。
3)替换注释。 — 变成空行
4)展开条件编译 — 根据条件来展开指令。
2. 编译 -S xxx.s 汇编文件
gcc -S hello.i -o hello.s
1)逐行检查语法错误。【重点】 — 整个编译4步骤中最耗时的过程。
2)将C程序翻译成 汇编指令,得到.s 汇编文件。
3. 汇编 -c xxx.o 目标文件
gcc -c hello.s -o hello.o
1)翻译:将汇编指令翻译成对应的 二进制编码。
4. 链接 无 xxx.exe 可执行文件。
gcc hello.o -o hello.exe
1)数据段合并
2)数据地址回填
3)库引入
-o:将结果输出并指定输出文件的文件名
3.调试程序:
添加行号:工具–》选项 --》文本编辑器–》C/C++ --》行号 选中。
- 设置断点。F5启动调试
- 停止的位置,是尚未执行的指令。
- 逐语句执行一下条 (F11):进入函数内部,逐条执行跟踪。
- 逐过程执行一下条 (F10):不进入函数内部,逐条执行程序。
- 添加监视:
调试 --》窗口 --》监视:输入监视变量名。自动监视变量值的变化。
VS常用快捷键