栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

程序环境和预处理

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

程序环境和预处理

程序的两种环境

任何c语言程序都需要经过两种不同的环境才能实现
第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。
第2种是执行环境,它用于实际执行代码

源文件经过编译器编译生成各自的目标文件,在经过链接器链接生成可执行程序。

编译环境-----》细分编译和链接阶段

执行环境

已经生成可执行程序(.exe)
程序执行的过程:

    程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序
    的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。程序的执行便开始。接着便调用main函数。开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回
    地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程
    一直保留他们的值。终止程序。正常终止main函数;也有可能是意外终止。
预处理阶段详解

1预定义符号
FILE //进行编译的源文件
LINE //文件当前的行号
DATE //文件被编译的日期
TIME //文件被编译的时间
STDC //如果编译器遵循ANSI C,其值为1,否则未定义


2#define定义的标识符 ----原样替换的规则

在程序中扩展#define定义符号和宏时,需要涉及几个步骤。

    在调用宏时,首先对参数进行检查,看看是否包含任何由#define定义的符号。如果是,它们首先
    被替换。替换文本随后被插入到程序中原来文本的位置。对于宏,参数名被他们的值替换。最后,再次对结果文件进行扫描,看看它是否包含任何由#define定义的符号。如果是,就重复上
    述处理过程。

宏和函数的对比

命名约定
一般来讲函数的宏的使用语法很相似。所以语言本身没法帮我们区分二者。
那我们平时的一个习惯是:
把宏名全部大写
函数名不要全部大写

条件编译

int main()
{
#if 1    //为真参与编译,为假参与
	printf("hehen");
	return 0;
#endif 
#if   0
	printf("hahan");
#endif
	return 0;
}
int main()
{
#ifndef M    //未宏定义则打印
	printf("hehen");
#endif
	return 0;
}
头文件包含的区别 ” “和<>

查找策略的不同: ” “现在源文件所在目录(当前工程)中查找,找不到再去库目录中查找
<>指针库目录下查找

防止头文件被重复引用

1#pragma once
2头文件中的 ifndef/define/endif

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号