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)
#简单购物车程序:money_all=0tag=Trueshop_car=[]shop_info={'apple':10,'tesla':100000,'mac':3000,'lenovo':3000 ...
- php获取当前月与上个月月初及月末时间戳的方法
php 获取今日.昨日.上周.本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime.下面首先还是直奔主题以示例说明如何使用 mktime 获取今日.昨日.上周.本月的起始 ...
- 在Eclipse中写web工程 发现import javax.servlet.http.HttpSession无法引入
解决方法 得加入tomcat的jar包,右击项目->build path-add libraries->server Runtime->选择要导入的tomcat 就可以了,如果没有选 ...
- Prim算法模板
//Gang #include<iostream> #include<cstring> #include<algorithm> #include<cstdio ...
- THinkPHP简单漂亮的分页类 DownLoad
PHP include_once("config.php"); require_once('page.class.php'); //分页类 $showrow = 10; //一页显 ...
- Python创建二维数组(关于list的一个小坑)
0.目录 1.遇到的问题 2.创建二维数组的办法 3.1 直接创建法 3.2 列表生成式法 3.3 使用模块numpy创建 1.遇到的问题 今天写Python代码的时候遇到了一个大坑,差点就耽误我交作 ...
- 分享Sql Server 2008 r2 数据备份,同步服务器数据(一.本地备份)
最近在部署一个系统,处于数据安全的考虑,因此对相应的数据库服务器定时备份,以及数据同步到备份服务上.之前在另外的一个项目中也做过相应的操作,但是操作都是按照查找到的文章一步一步的操作,碰到一些细节问题 ...
- 洛谷 P3928 Sequence
题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强.小强便打算找出这三个数列内的最长波动数列. ...
- JS 转换数字为大写
function toUpper(n) { n = n+''; var unit = '十百千万'; var num = '一二三四五六七八九 '; var array = new Array(); ...
- WPF水珠效果按钮组
效果图 相关知识 这部分基本就是废话,网上都能找到,我只不过是整理了以下.建议先不看,用到的时候可以回来看看 贝塞尔曲线 先来看两组图,有助于理解什么是贝塞尔曲线(图片取自维基百科,参考链接1) 二次 ...