C++宏定义需要注意的细节
来源:互联网 发布:人工智能有哪些岗位 编辑:程序博客网 时间:2024/04/25 18:18
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方
便,并能在一定程度上提高程序的运行效率,但如果我们不需要到一些细节,很容易因
为这个简单的宏定义引发难以预料的问题宏的定义
(1)简单的宏定义:
- #define <宏名> <字符串>
- 例: #define PI 3.1415926
(2) 带参数的宏定义
先来看一道题:- #define <宏名> (<参数表>) <宏体>
- 例: #define A(x) x
#define SUB(x,y) x-y#define MODEIF_ARRAY(ele,offset,value) *SUB(&ele,offset)=valueint array[10]={1,2,3,4,5,6,7,8,9}MODEIF_ARRAY(array[6],4,0);for(int i=0;i<10;i++){ cout<<array[i];}
执行结果:程序可以正确编译,但是运行时会崩溃。
解析:因为宏在预处理的时候,会将MODEFIY_ARRAY(array[6],4,0)替换为*&array[6]-6=0; 即7-6=0;显示会报错。
解决办法:
#define SUB(x,y) (x-y)
总结:
1.定义宏的时候,小心的把参数用()括起来。
2.有时候考虑到整数溢出,要用长整型符号L,或者是无符号长整型。
3.宏定义后面没有;号
0 0
- C++宏定义需要注意的细节
- C需要注意的细节
- 宏函数定义时需要注意的一些细节
- Object-C中需要注意的细节
- Java调用C#WEBSERVICE需要注意的细节及实例
- awk需要注意的细节
- 编程需要注意的细节
- block需要注意的细节
- Netty 需要注意的细节
- 宏定义后注意细节
- 宏定义需要注意的地方
- 开店需要注意的七大细节
- iBatisNet 需要注意的细节(初学者适用)
- jQuery中需要注意的细节问题
- 使用OpenCV需要注意的小细节
- JAVA 继承需要注意的细节
- BS开发需要注意的细节
- 编程中需要注意的细节
- 第四周项目1-求最大公约数(2)
- 第四周项目训练2
- 《iOS Human Interface Guidelines》——Detail Disclosure Button
- Java内存模型FAQ(一)什么是内存模型
- C++第二次课堂实验
- C++宏定义需要注意的细节
- dlib人脸检测功能介绍
- myeclipse Servlet的创建及访问
- 猜数字
- IP设置同一网段
- PowerDesigner远程连接oracle11g数据库,导入表,增加表注释
- 剑指 offer代码解析——面试题34丑数
- 第3周项目10-谁是小偷
- 新安装的mysql,启动时候出现错误 The server quit without updating pid file