首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言程序的编译、预处理

3.链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。...而源程序通过编译和链接最终形成可执行程序,但是编译本身也分为几个阶段:预编译/预处理——编译——汇编 预处理 选项 gcc -E test.c -o test.i 预处理完成之后就停下来,预处理之后产生的结果都放在...__ //如果编译器遵循ANSI C,其值为1,否则未定义 这些预定义符号都是语言内置的 int main() { int i = 0; FILE* pf = fopen("log.txt", "w...替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。...#和## 开始之前,我们可以想一个问题:如何把参数插入到字符串中❓ 我们要先理解一下,在C语言中,下面两句代码是能达到相同结果的: #include int main() {

19420
您找到你想要的搜索结果了吗?
是的
没有找到

C语言】预处理程序环境

二、详解编译+链接 其中,在编译过程中,符号汇总是指将所有.c文件的函数名汇总在一起;在汇编过程中的形成符号表是指,将所有.c文件中的函数都给一个地址,其中,在主函数中的函数如果只有声明时,会给一个无效的地址...#define定义宏 #define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏或定义宏。...替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。...宏的缺点: 当然和函数相比宏也有劣势的地方: 每次使用宏的时候,一份宏定义的代码将插入到程序中。除非宏比较短,否则可能大幅度增加程序的长度。 宏是没法调试的。...#endif //常量表达式由预处理器求值。 如: #define __DEBUG__ 1 #if __DEBUG__ //..

8710

C语言进阶——程序环境和预处理

程序环境外,C/C++在预处理阶段还有各式各样的预处理指令等着我们去发掘,一起来看看吧!...本文主要分为两部分:程序环境讲解和预处理指令详解,其中程序环境需要在Linux环境下用gcc编译器展示,光是环境配置就比较麻烦,因此这部分会偏向于理论知识,不需要去实践,理解性记忆就好了;预处理指令在VS...1.1.1、预编译 预编译阶段会干这些事: 1.包含头文件 2.删除注释 3.替换 #define 定义的符号   干完这些事后会生成一个 .i 文件,此时的文件仍然是C语言形式的文本文件,举个例子(通过其他手段在...推荐了解其他预处理指令 #error #pragma #line  …… ---- 总结   以上就是关于C语言程序环境和预处理的所有内容了,如果你在看完此文后能对C语言代码的运行有一个新的认识,那么本文就值了...当然,只是C语言整体知识系列划上了句号,其他文章还是会继续更新下去的, 比如 数据结构 | C 这个系列,还有高深一些的 C语言高阶——函数栈帧的创建和销毁 ,其他好玩的小程序、有意义的题解等。

19520

C语言进阶-程序环境和预处理

掌握学习各种预处理知识 程序的翻译环境和执行环境 ---- 任何一个代码从源文件(.c文件)到可执行文件(.exe文件)都经历了两个环境 翻译环境: 在这个环境中源代码被转换为可执行的机器指令...(linker)捆绑在一起,形成一个单一而完整的可执行程序(.exe文件) 链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个 人的程序库,将其需要的函数也链接到程序中...),存储函数的局部变量和返回地址;程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值 终止程序:正常终止main函数,也有可能是意外终止 预处理详解...如果是,它们首先被替换 替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值替换 最后,再次对结果文件进行扫描,看看它是否包含任何由#defifine定义的符号。..., ch ); PRINT("%s", str ); } 注:代码中的#VALUE 会预处理处理为 "VALUE" ## 的作用 作用: ##可以把位于它两边的符号合成一个符号,它允许宏定义从分离的文本片段创建标识符

62350

自然语言处理--文本处理

自然语言处理的目的是让机器试图理解和处理人类的文字。通常来说,人的语言是冗余的,含有歧义的,而机器是准确的,无歧义的,要让机器理解,这之间存在一个转换的问题。...通常做法的逻辑思路是,文本处理-->特征提取-->建立模型 文本处理是为了让数据干净,便于输入数学模型做处理。...文本处理的常见流程: 文本获取:下载数据集;通过爬虫程序从网上收集;通过SQL语句从数据库读取等等; 文本提取:从多种数据来源提取文本(如从网页、txt、pdf文件、OCR纸张的复印件、甚至语音识别),...如用正则表达式提取文本,网页则用CSS选择器的语法提取文本,复印件图片则用OCR识别文本技术。...文本正则化:也就是规范化文本,英文需要处理大小写,可以根据需要去除标点符号, 文本词语切分:中文需要分词,英文直接按空格拆分出一个个单词。

2K80

C语言_预处理

C语言_预处理 文章目录 C语言_预处理 0.引言 1.#include 2.#define (符号常量) 3....#error和#pragma预处理命令 6.#和##运算符 0.引言 C的预处理是在程序被编译之前执行的,包括将其他文件包含进正在编译的文件,定义符号常量和宏,条件编译和有条件的执行预处理命令。...使用引号时:会从待编译文件所在的目录里开始查找,一般用于程序员自己定义的头文件 使用尖括号:用于标准函数库的头文件,一般会在预先指定的编译器和系统目录中开始查找 2....#define (符号常量) 格式:#define indentifier replacement_text 功能:其后出现的所有标识符(indentifier)会在编译前被替换为后面的替换文本 p.s...#和##运算符 #:#运算符需用在带实参的宏中,其操作数就是宏的实参,它将替换文本中的标记转换成一个用引号引起来的字符串。

1.1K10

C语言】预处理

ANSI C,其值为1,否则未定义 以上是C语言设置的一些预定义符号,是可以直接使用的,预定义符号在预处理阶段处理 二、#define定义常量 基本语法: #define name stuff 例子:...然后++,x=8,最终得到答案就是上述答案 五、宏替换的规则 1、调用宏的时候,首先对参数进行检查,看是否包含任何由#define定义的符号,如果是,他们首先被替换,也就是首先替换参数 2、然后替换文本随后被插入到程序中原本文本的位置...,在宏较长的情况下可能会导致大幅度增加程序的长度 2、宏无法调试 3、宏与类型无关,这虽然是它的一个优点,也是一个缺点,因为这导致它不够严谨 4、宏可能会带来运算优先级问题,如上面第三条所说,容易导致程序出错...(三)、宏和函数的对比 属性 #define定义宏 函数 代码长度 每次使用时,宏代码都会被插入到程序当中,除了非常小的宏之外,程序的长度会大幅度增长 每次使用函数时,都调用同一个地方的同一份代码 执行速度...c语言给我们很多预处理指令,我们工作的过程中可能会用到,大家自行查找学习 今日分享就到这里了~

9210

自然语言处理文本卷积

*注:本文仅适用于已了解图像卷积过程的童鞋们 自然语言处理文本卷积 1.文本的向量表示 2.文本的1维卷积 3.池化 1.文本的向量表示 在文本处理时,首先要将文本用向量表示出来。...来表示每个单词 •每个向量的长度减少,并且是稠密向量 •将每个单词的向量相加来得到文本的向量表示 2.文本的1维卷积 3.卷积核 卷积核的宽度和词向量的长度相同,行数代表n-grams中的n,即有n...•卷积核的大小可改变(行数),可以进行3-gram,4-gram卷积 •和图像处理一样,需要多个卷积核 •1维卷积是因为只在一个方向上进行卷积(时间方向) 一个卷积核对一段文本进行卷积最终得到一个向量...(与前面直接将每个词向量相加得到得到文本向量不同)。...•用3,4,5-gram的卷积核各100个来处理文本,经过卷积池化最终得到一个长度为300的向量 •这个向量可以用于机器学习模型中(MLP、朴素贝叶斯等) •这样解决了处理文本信号时输入长度不一的问题。

1.4K160

C程序的编译链接预处理详解(C语言内功,精炼,基础)

前言:大家好,这里是YY;此篇博客主要是程序的编译/链接/预处理详解的知识点;包含【程序的翻译环境和执行环境】【编译和链接的过程】【编译的几个阶段】【运行环境】【预定义符号】【define/undef...一.程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境 翻译环境,此过程中源代码转换为可执行的机器指令 执行环境,它用于实际执行代码 二.编译和链接的过程 三.编译的几个阶段...__DATE__ //文件被编译的日期 __TIME__ //文件被编译的时间 __STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义 六.define/undef...1.宏的优点: 1.小型工作时反应速度更快 2.不需要指定特定类型(宏是类型无关的) 2.宏的缺点: 1,用一次,会在文本中插入一次代码...) 例如: 1.预处理指令和普通判断语句的区别: 预处理指令在预处理阶段就将不要的代码删除 后面都要跟一个endif收尾 2.常见的条件编译指令: 普通条件编译:if/endif 多分支的条件编译

12110

抽丝剥茧C语言(高阶)程序环境和预处理

程序环境和预处理 程序的翻译环境和执行环境 运行环境 预处理 程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。...链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。...翻译阶段 顺序是从左到右,用gcc编译器可以观察到: 预处理 选项 gcc -E test.c -o test.i 预处理完成之后就停下来,预处理之后产生的结果都放在test.i文件中。...ANSI C,其值为1,否则未定义 这些预定义符号都是语言内置的。...替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上述处理过程。 注意: 4.

50200

C语言进阶(十五) - 预处理程序编译初步解析

前言 本节主要介绍程序运行前的预处理(预编译)阶段的相关知识。同时简单介绍一个程序是如何从一行行代码到开始运行并得到结果的。 ---- 1....预处理 1.1 预定义符号 首先是C语言内置的预定义符号。...替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值所替换。 最后,再次对结果文件进行扫描,看看它们是否包含任何由#define定义的符号。如果是,重复上述处理过程。...除非宏比较短,否则可能大幅度增加程序的长度。 宏的替换在预处理阶段完成,无法进行调试(程序运行时)。 宏是类型无关的,这意味着宏不够严谨。(双刃剑)。...链接器同时也会要引入标准C函数库中任何被该程序所用到的函数,而且他可以搜索程序员个人的程序库,将其需要的函数也链接到程序中。

40520

自然语言处理(二) | Python对文本的简单处理

今天将接续上一篇《自然语言处理》, 为大家继续介绍一些用Python处理文本的方法。 NLP主要是对文本处理。...在更深的应用中,我们可以根据我们的需要,去处理我们想要处理文本(比如上次提到的“购物网站中的买家评论”)。...而在开始的时候,我们一般使用NLTK中提供的语料进行练习;NLTK不仅提供文本处理的工具,而且提供了一些文本材料。...在操作命令中,我们将使用这些名字来指代相应的文本,以对其进行处理。 下面的内容是对一些方法或函数的介绍, 分为两个层面:文本层面和词汇层面。...这时我们需要用到两个程序包:NumPy和Matplotlib。

75820
领券