c语言里,关于宏定义的使用
宏定义最关键的是要注意它只是一个文本替换,不注意的话,很容易引起歧义,看下面一段代码:
#include<stdio.h>
#define M( x ) ( x*x )
int main()
{
int a, b= 3;
a = M( b+2 );
printf ("%d\n" , a );
return 0;
}
这里的 M 是想要得到 x 的平方,而在程序中调用的参数为 b+2 ,原本想将 a 赋值为 (b+2)*(b+2),也就是 25 ,但是由于宏定义是展开在预处理时期,也就是在编译之前,此时 b 并没有赋值,这时候的 b 只是一个符号。 因此在程序中被展开为: (b+2*b+2); 所以程序执行后的结果为 a 的值为11。
所以为了达到原来的目的,我们可以把宏定义 M 改为:
#define M(x) ( (x) * (x) )
就可以变为平方的形式了
c语言里,关于宏定义的使用相关推荐
- 【C语言进阶】 宏定义实现字符串引用
宏定义实现字符串引用 原理 最简单的引用策略 使用#进行转义 原理 用宏定义实现字符串引用: 这种做法在编译的时候直接给宏名所对应的字符串 分配了一个内存地址空间,可以进行字符串输出.地址打印.指针操 ...
- C语言 常量和宏定义
C语言:常量和宏定义 什么是常量 常量的类型 定义符号常量(宏定义) 标识符是什么 字符串常量 代码 什么是常量 在程序运行时,值不能被改变的量,称之为常量. 常量的类型 整型常量:520,1314, ...
- C语言字符串、宏定义及主函数介绍
希望你每天醒来都是阳光的,不会因为别人的几句话.几个表情和几个举止,影响自己的心情,好好生活,总会遇见美好的事... ---- 网易云热评 一.字符串 1.字符串声明 #include <st ...
- 【C语言】高级宏定义
前言 宏定义分为不带参数的宏定义和带参数的宏定义,不带参数的宏定义就是普通的宏定义,带参数的宏定义则稍稍复杂.下面将结合一些例子讲解这些显得比较高级的宏定义. 文章目录 前言 一.高级宏定义 1.#d ...
- C语言中关于宏定义的学习
1.C语言中宏定义的使用 2.GCC官方文档 3.C语言宏定义的几个坑和特殊用法 转载于:https://www.cnblogs.com/Brandon0807/p/11146344.html
- C语言里的“宏”是指什么?
简单来说:宏定义又称为宏代换.宏替换,简称"宏".是C提供的三种预处理功能的其中一种.复杂的请看下面,讲的很全.下面的带参宏定义,多行宏定义,在Linux内核源码中很多.另外siz ...
- c语言宏定义可变参数,C语言可变参数宏定义方法
http://blog.csdn.net/skyflying2012/article/details/38436711 2014 在GNU C中,宏可以接受可变数目的参数,就象函数一样,例如: 1 2 ...
- C语言中#、##宏定义的用法
一.#的用法 #用于编译器编译过程进行预处理. 1.宏定义 #define ON 1#ifndef _PARA_ #define _PARA_ #enddef#ifdef _PARB_ #define ...
- C语言 带参数宏定义中 # 和 ## 知识点总结、代码分析
目录 一.宏定义中 "#"知识点 1.直接转换字符串,不展开. 2.转换出的结果一定是"字符串". 二.宏定义中 ## 知识点 1.应用场景 2."# ...
- C语言函数调用及宏定义代码实例
函数 #include<stdio.h>int square(int x); int square(int x){return x * x; }/*** 求x的平方*/ int main( ...
最新文章
- 1199: 房间安排
- swift支持多线程操作数据库类库-CoreDataManager
- Java中string拼接,StringBuilder,StringBuffer和+
- weblogic安全漫谈
- 【数据结构与算法】图
- Atitit。Cas机制 软件开发 编程语言 无锁机制 java c# php
- QT4.7和VS2008 顺利安装必读 (最新版)
- 数据库学习--DML(数据管理语言)
- XPS10.1仿真PPC440步骤及遇到的问题
- 超详细三维建模教程【小白专用】
- 富士通Fujitsu DPK210 打印机驱动
- Spring底层原理问题
- 【暑假阅读推荐书目】历史篇·中国史
- html 地区筛选插件,帝国CMS7.2实现地区三级联动并且前台可地区筛选的插件教程...
- RK3566触屏旋转方向
- 【matplotlib】画图基本函数 pyplot.barh 画水平柱状图
- C4D中英文对照—噪波基础设置
- AOE图,最早活动时间最晚活动时间,关键路径关键节点
- python 仪表盘数据显示_Python制作仪表盘图,比Excel快速百倍
- ​现代计算机的雏形-微型计算机MCS-4
热门文章
- Django2.2中Xadmin错误集
- python学习日记(OOP——静态方法和类方法)
- 区分Collection、Collector和collect Collectors类的静态工厂方法
- Three.js 学习笔记(1)--坐标体系和旋转
- 【krpano】多分类缩略图及多分类地图案例
- 跟我从零基础学习Unity3D开发--NGUI入门基础
- invocation, 作者 Medwyn Goodall,女巫医 [搜索 invocation Medwyn Goodall]
- 下载SAP标准教程的方法
- [CEOI2008]order
- flex弹性布局学习总结