C:宏定义的一些格式(怕忘记)
现在还没怎么用到宏定义,但以后肯定会经常用的,写下这盘,以后忘记了可以温故。首先宏定义必须写在函数之外,其作用域从宏定义命令起到源程序结束,也就是说一但定义系统就会分配内存,想让它结束用“#undef“命令,格式如下:#define 标识符 字符串,记住不能加封号,假如宏名在源程序中用双引号括起来,则已成为字符串中的字符,预处理程序不对其进行宏替换,例子:
#include "stdio.h"
#define OK 100
void main()
{
printf("OK");
}
其结果还是为:OK。宏定义还允许嵌套,比如:#define p 1314 #define q p*p,用宏定义可以简单化你的代码,至少打的字少很多,假如我们要输出五个数并且要换行,是不是要打五个%d和\n,现在用宏定义试一下:
#include "stdio.h"
#define x "%d
#define y \n
#define x1 %d
#define y1 \n"
void main()
{
int a=,b=,c=,d=;
printf(x y x1 y x1 y x1 y1,a,b,c,d);
}
从代码可以看出x y x1 y x1 y x1 y1=="%d\n%d\n%d\n%d\n",但是结果是不能运行的,这说明我们不能一一代入,还是要尊重下宏定义的规则,例如这样:
#include "stdio.h"
#define x "%d"
#define y "\n"
void main()
{
int a=,b=,c=,d=;
printf(x y x y x y x y,a,b,c,d);
}
这样就可以运行。宏定义还可以定义一些简单的函数,格式如下:#define 宏名(形参表) 字符串,来做个比较容易混淆的例子:
#include "stdio.h"
#define SQ(y) y*y
main()
{
int a,b;
scanf("%d",&a);
b=SQ(a+);
printf("%d",b);
}
运行结果:aaarticlea/png;base64,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" alt="" />,一开始我以为是16,但是其运行过程是:a+1*a+1;因为上面宏定义是y*y,当我们把y*y改成(y)*(y),其结果是:aaarticlea/png;base64,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" alt="" />
其中运行过程是:(3+1)*(3+1)=16.
C:宏定义的一些格式(怕忘记)的更多相关文章
- C语言中的宏定义
目录(?)[-] 简单宏定义 带参数的宏 运算符 运算符 宏的通用属性 宏定义中圆括号 创建较长的宏 较长的宏中的逗号运算符 宏定义中的do-while循环do 空操作的定义 预定义宏 C语言中常用的 ...
- iOS 日常工作之常用宏定义大全
转自:http://www.jianshu.com/p/213b3b96cafe 前言: 在工作中, 很多小伙伴都会在PCH文件定义一些常用的宏,但是又怕写这些简单的宏浪费时间,又有时候忘记怎么定义了 ...
- VC中预处理指令与宏定义详解
刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能. 一个 ...
- iOS日常工作之常用宏定义大全
前言: 在工作中, 很多小伙伴都会在PCH文件定义一些常用的宏,但是又怕写这些简单的宏浪费时间,又有时候忘记怎么定义了怎么办?本人在工作中也是如此.所以在这里给大家分享一些常用的宏定义,喜欢的小伙伴可 ...
- c语言宏定义#define的理解与资料整理
1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认 ...
- C 宏定义
C/C++中宏使用总结 .C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.虽然它们实际上不是C语言的一部分,但却扩展了C程序设计的环境.本节将介绍如何应用预处理程序和注释 ...
- linux C宏定义 转
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H ...
- c语言宏定义#define
1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认 ...
- [转]c语言宏定义#define的理解与资料整理
原文地址:http://www.cnblogs.com/haore147/p/3646934.html 1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也 ...
随机推荐
- 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)
一.软件描述 用Python tkinter模块写一款属于自己的压缩软件.zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip ...
- android堆栈调试--详细
1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如: export PATH=$PATH:~/dlna/android ...
- NullSafe基于Runtime的深度解析
Objective-C是一门动态语言,一个函数是由一个selector(SEL),和一个implement(IML)组成的. 执行一个方法时如果系统找不到方法会给几次机会寻找方法,实在没有此方法就会抛 ...
- 关于Excel数据批量导入数据库的案例
写这个案例主要是感觉这个功能挺实用,很多地方会用得到的,废话就不多说了,直接上对应的源码. 这个案例我运用的是Winform窗体程序实现数据的导入. 首先是数据库的登陆界面如下: 源码如下: usin ...
- Flex布局学习笔记
任何元素都可以使用Flex布局,包括行内元素 display: flex; display: inline-flex使用Flex布局之后,子元素的float, clear, vertical-alig ...
- Java第一季
1.Java常量的应用 语法:final 常量名 = 值: final String LOVE = "IMOOC"; final double PI = 3.14 举一个简单的例子 ...
- poj1611 解题报告
并查集学习过之后做了几道相关联系,这里贴出1611 The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: ...
- zanphp 初探----安装篇
安装 zanphp 的安装详细步骤具体在 http://zanphpdoc.zanphp.io/,但是安装的时候,还是踩了一些坑,Mac 和 Ubuntu 我都安装过, 分享大家注意一下. PHP 版 ...
- 用swoole和websocket开发简单聊天室
首先,我想说下写代码的一些习惯,第一,任何可配置的参数或变量都要写到一个config文件中.第二,代码中一定要有日志记录和完善的报错并记录报错.言归正传,swoole应该是每个phper必须要了解的, ...
- saltstack_grains
1. [root@kylin1 grains]# cd /srv/salt/_grains/ [root@kylin1 _grains]# ls cpu.py [root@kylin1 _grains ...