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 宏定义是个演技非常高超的替身演员,但也 ...
随机推荐
- Less的!important关键字
Less的!important关键字 在调用 mixin 时,如果在后面追加 !important 关键字,就可以将 mixin 里面的所有属性都标记为 !important.如,以下Less代码: ...
- 2964:日历问题-poj
2964:日历问题 总时间限制: 1000ms 内存限制: 65536kB 描述 在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰 ...
- php intval()和floatval()
intval -- 获取变量的整数值 floatval -- 获取变量的浮点值 <?php $a = 26; $b = 4; $a/=$b; echo intval($a);//6 echo f ...
- 写一段PHP代码,确保多个进程同时写入同一个文件成功(腾讯)
- Android破解学习之路(二)——Android游戏 滚动的天空破解
经过上一期的破解教程,相信大家跟我一样都是对破解是初入门,我们破解的目的是什么? 赚钱吗?百度上一大堆破解版的应用,破解的人有赚到钱吗?实实在在的说,其实也是方便自己而已. 玩个游戏,感觉过不去了,来 ...
- Openssl 生成证书server.key and server.crt
1.key的生成 openssl genrsa -des3 -out server.key 2048 这样是生成rsa私钥,des3算法,openssl格式,2048位强度.server.key是密钥 ...
- UWP 判断系统版本
public class VersionsHelper { , ); , ); , ); , ); , ); }
- vue.js介绍,常用指令,事件,以及制作简易留言版
一.vue是什么? 一个mvvm框架(库).和angular类似,比较容易上手.小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作 二.vue和angular之间的区别 vue--简单易学 ...
- java设计模式—多工厂模式
概念 多个工厂模式,是对普通工厂方法的改进,在普通工厂模式中,如果字符串传递出错,则不能正 确创建对象,而多个工厂模式是提供多个工厂方法,分别创建对象. 多个工厂模式关 ...
- C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)
昨天周末给学妹讲了一些指针的知识,本来我对指针就是似懂非懂的状态,经过昨天一讲,我对指针的学习就更深刻了 果然给别人讲课也是学习的一个方法.加上最近复习数据结构,发现我的博客里没有链表的博文,所以趁这 ...