admin管理员组文章数量:1794759
C语言学习之路(工具篇)—— Visual Studio的使用
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
第一个C语言程序 Visual Studio新建项目
源文件—添加—新建项
通过Visual Studio运行 通过gcc编译后运行C语言编译过程 C语言编译步骤 1)预处理
宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
2)编译检查语法,将预处理后文件编译生成汇编文件
3)汇编将汇编文件生成目标文件(二进制文件.o)
4)链接设置运行环境,堆栈等,链接其他库;C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
gcc编译步骤 1) 分步编译 预处理:gcc -E hello.c -o hello.i 编 译:gcc -S hello.i -o hello.s 汇 编:gcc -c hello.s -o hello.o 链 接:gcc hello.o -o hello-o file | 指定生成的输出文件名为file |
-E | 只进行预处理 |
-S(大写) | 只进行预处理和编译 |
-c(小写) | 只进行预处理、编译和汇编 |
.c | C 语言文件 |
.i | 预处理后的 C 语言文件 |
.s | 编译后的汇编文件 |
.o | 编译后的目标文件 |
带#的语句就是预处理指令,预处理指令在预处理的时候处理了 头文件展开: #include <stdio.h> 包含文件stdio.h(预处理时将stdio.h 文件拷贝至预处理文件中) 删除注释: 注释有两种方法: // /* */ 宏替换: #define 代表是声明一个宏, 在预处理时会将宏给替代 预处理时 不会检查语法错误
条件编译: 条件不成立: #if 0 -> #endif 条件成立 #if 1 -> #endif
编译分析将预处理文件编译生成汇编文件 会检查语法错误
汇编分析将汇编文件编译生成二进制文件.o
链接分析设置运行环境,堆栈等,链接其他库
2) 一步编译 gcc hello.c -o hello(还是经过:预处理、编译、汇编、链接的过程): C语言代码分析 1) include头文件包含- #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件
- 使用C语言库函数需要提前包含库函数对应的头文件,如这里使用了printf()函数,需要包含stdio.h头文件
- 可以通过man 3 printf查看printf所需的头文件
- 一个完整的C语言程序,是由一个、且只能有一个main()函数(又称主函数,必须有)和若干个其他函数结合而成(可选)。
- main函数是C语言程序的入口,程序是从main函数开始执行。
- {}叫代码块,一个代码块内部可以有一条或者多条语句
- C语言每句可执行代码都是";"分号结尾
- 所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的
- 所有的可执行语句必须是在代码块里面
- //叫行注释,注释的内容编译器是忽略的,注释主要的作用是在代码中加一些说明和解释,这样有利于代码的阅读
- /**/叫块注释
- 块注释是C语言标准的注释方法
- 行注释是从C++语言借鉴过来的
- printf是C语言库函数,功能是向标准输出设备输出一个字符串
- printf(“hello world\\n”);//\\n的意思是回车换行
- return代表函数执行完毕,返回return代表函数的终止
- 如果main定义的时候前面是int,那么return后面就需要写一个整数;如果main定义的时候前面是void,那么return后面什么也不需要写
- 在main函数中return 0代表程序执行成功,return -1代表程序执行失败
- int main()和void main()在C语言中是一样的,但C++只接受int main这种定义方式
作用: 在程序中启动另一个程序 参数:要的是待启动程序的路径名
寄存器、缓存、cpu、内存之间的关系cpu > 寄存器 > 缓存 > 内存
汇编语言 VS中C语言嵌套汇编代码 VS反汇编将重新定义main方法中的代码块,取消汇编代码
1)设置断点F9 2)F5调试 3)选择反汇编按钮 4)根据汇编代码分析程序 VS查看变量内存地址打开调试下的内存窗口 打开调试下的监视窗口 查看a变量的内存地址,在监视窗口输入&a回车,然后在内存中搜索即可
VS关闭警告 //解决方法 #define _CRT_SECURE_NO_WARNINGS //这个宏定义最好要放到.c文件的第一行 #pragma warning(disable:4996) //或者使用这个版权声明:本文标题:C语言学习之路(工具篇)—— Visual Studio的使用 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686628751a88221.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论