| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 程序环境和预编译 -> 正文阅读 |
|
[C++知识库]程序环境和预编译 |
目录 程序的编译和链接
以linux环境下代码为例:
程序执行过程
预定义符号
这些预定义符号都是内置的。例如:
一、#define1、#define定义标识符
例如:
注:如果定义的stuff过长,可以分成几行写,除了最后一行外,每行的后面都加一个反斜杠(续行符)。每一个换行符后面不能够有任何符号(空格也不能有,否则运行时会出错)。建议在define定义标识符的时候不要加上;,容易出现语法错误。
2、#define定义宏宏的申明方式:
注意:参数列表的左括号必须与name相邻。如果两者之间有空格存在,参数列表就会被解释为stuff的一部分。 如下面一个宏:
对于以上代码,当参数x被替换为5+1时,并没有按照预想的次序进行求值。对于这种问题,我们只需要在进行定义时对每个参数加上括号即可。而在进行宏的相关运算时,我们也需要考虑运算的优先级问题,当存在运算的优先级高于宏的优先级时,我们需要给宏整体添加括号。 3、#define替换规则在程序中扩展#define定义符号和宏时,有几个步骤:
注意:
4、#和##
注:字符串有自动连接的特点 (1)#将宏参数变成相应的值
(2)两个##的作用
注:连接必须产生一个合法的标识符。否则结果未定义。 二、宏和函数的对比宏通常被应用与较简单的计算,比如:
那为什么不用函数来实现?原因如下:
当然和函数相比,宏也有劣势的地方:
宏有时候可以做函数做不到的事情。比如:宏的参数可以出现类型,但是函数做不到。
文件包含(#include)#include指令可以使另外一个文件被编译。 1、头文件被包含的方式
查找:先在源文件所在目录下查找。如果该头文件未找到,编译器就像查找库函数头文件一样在标准位置查找头文件。如果找不到就提示编译错误。 注:按照自己的安装路径去找。
查找:直接在标准路径下去查找,找不到提示编译错误。对于库函数也可以使用“”的形式包含。 2、避免头文件重复引用对于两个源文件都需要用到同一个头文件,这样就造成了文件内容的重复。如何解决这个问题?答案:条件编译。 每个头文件的开头写:
或者,这样就可以避免头文件的重复引入。
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:47:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |