这次讲一个可以说过时,但是也可以说永不过时的内容:C/C++的编译与链接。说它过时,因为我们学习C语言的时候,第一个讲的就是这个知识点;而它不过时,是因为它是程序运行的基础。比如在一个C/C++工程中,可能会有很多的 .c/.cpp、.h/.hpp文件,这时候我们要运行这个工程,就离不开编译与链接。 接下来将在命令行一步步地进行这个过程。 编译与链接C/C++的执行过程包括预处理(Prepocessing)、编译(Compilation)、汇编(Assembly)、链接(Link)四步。我们常常忽略预处理与汇编,直接把这个过程称为编译与链接;有时候甚至直接用编译来代指这整个过程(虽然可能是不标准的说法)。 下面两张图总结C/C++的编译与链接: 预处理(Preprocessing)以 test.c 为例,对它进行预处理的命令是:cpp test.c > test.i。它的作用是将 test.c 中包含的头文件和定义的宏 (Macro) 展开,得到 test.i 文件。 .i 文件,它也是 C 文件的一种,即里面的代码也是C语言。 程序中进行预处理的标志是 #,常见的预处理指 ...
先尝试回答一下以下问题: C语言的数据类型有哪些?基本数据类型可以怎样分类? int可以表示的整数的数量级?char默认有符号还是无符号?为什么下面代码的c=26 (%d)?1char a=175; char b=107; char c=a+b; 几种算数运算符对整数、浮点数分别是怎么处理的?结果是整数还是浮点数? 奇葩的逗号表达式是怎么回事? scanf_s被报错了是怎么回事?格式控制字符串怎么理解? 基本数据类型C语言的数据类型包括基本类型、构造类型、指针类型和空类型。构造类型包括数组、结构、联合和枚举,是用户以基本类型为基础构造的复杂类型。下面细说基本数据类型。 C语言的基本类型可以按照如下方式分类: 值得一提的是char被划分在整型数据里面,其实这是很合理的:字符型变量真正存储的是一串8位的数码,而当编译器知道这个变量是字符型后,就会通过该编码找到对应的字符。所以char可以当作1byte的整数使用;同理,int也可以当作char使用,如下: 1int a=65; printf("%c\n",a); 最后会打印A,因为在格式说明里已经要求把int按 ...
本文主要解决以下几个问题: 常用的字符编码方式有哪些? Visual Stdio的默认编码方式是什么?vscode的编码方式是什么?gcc/g++编译后显示结果时编码方式是什么? 跨编辑器和编译器导致的中文乱码改怎么解决? 你敢用这段代码:printf("%c%c%c%c%c%c\n",206,210,176,174,196,227);去表白吗? 编译结果为烫烫烫烫烫是怎么回事?系统过热警告? 如果大神们都知道,也请继续看下去。希望能找出本文的一些错误或者给本萌新一些建议。 序言有的人可能知道,我会玩一些需要转区的游戏。调整windows的地区,再重启电脑后,许多文档的内容都变成了一堆乱码——这就是不同地区的编码方式不同所产生的问题。然而我之前都忽视了这个问题。 最近开始了解编码的契机,就是我从VS转用vscode的时候,发现以前写的和Github上克隆一些代码在vscode中中文显示乱码,或者显示正常但gcc编译后中文乱码。 本文最终将会给出这个问题的解决方案。 字符编码方式先来看看编码的定义(摘自维基百科): 编码是信息 从一种 形式 或 格式 转换 ...
avatar
Sato
我们的前方究竟会通往何处?
Follow Me In Github
公告

莱莎的炼金工房

十年炼金无人问,一朝肉腿天下知。

住在村裡的萊莎有如鄰家女孩,是一位“再普通不過”的少女。
某日,萊莎一行下定決心,前往禁止進入的「浮島對岸」,展開首次探險活動。
于是,僅限今夏的冒險,从此开始。