C语言程序设计--宏和预处理
C语言宏
宏定义常量
#include <stdio.h>
#define SIZE 100
#define BANNER "WARNING:"
int main(void){
printf("%d\n", SIZE);
printf("%s\n",BANNER);
return 0;
}

宏定义数据类型
#include <stdio.h>
#define string char*
int main(void){
string banner = "HELLO, WORLD!";
printf("%s\n",banner);
return 0;
}

宏定义函数
#include <stdio.h>
#include <stdlib.h>
#define random (rand()%100)
int main(void){
while(1){
int num = random;
printf("%d\n", num);
if (num >= 50){
break;
}
}
return 0;
}

宏定义带参数函数
#include <stdio.h>
#include <stdlib.h>
#define max(a,b) a>b?a:b
int main(void){
int max_num;
max_num = max(10,100);
printf("%d\n",max_num);
max_num = max(10,6);
printf("%d\n",max_num);
return 0;
}

宏解除定义
#undef xxx
预处理
三个已知
#include <stdio.h>//包含文件
#define SIZE 100 //定义宏
#undef SIZE //解除宏定义
条件宏定义
#define MAX 100
#ifdef MAX //如果定义了MAX宏
#undef MAX
#else //否则
#define MAX 10
#endif
#ifndef MIN//如果没有定义MIN
#define MIN 2//定义宏MIN为2
#endif
另外的条件判断
#include <stdio.h>
#include <stdlib.h>
#define MAX_THREAD 10
#if MAX_THREAD > 5
#undef MAX_THREAD
#define MAX_THREAD 5
#endif
int main(void){
printf("%d\n",MAX_THREAD);
return 0;
}
/*同理#else和#elif的用法与else 和else if类似*/

最后两个
/*
#error 当遇到标准错误时,输出错误消息
#pragma 使用标准化方法,向编译器发布特殊的命令到编译器中
*/
C语言程序设计--宏和预处理的更多相关文章
- C语言程序设计第二次作业--顺序结构
C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...
- C语言第十一讲,预处理命令.
C语言第十一讲,预处理命令. 一丶预处理简介 什么是预处理,预处理就是预先处理. 我们知道,程序会经过编译,连接形成可执行文件 这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理.提前 ...
- C语言程序设计50例(经典收藏)
本篇文章是对C语言程序设计的50个小案例进行了详细的分析介绍,需要的朋友参考下 [程序1]题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位.十 ...
- C语言程序设计:现代方法(第2版)第二章全部习题答案
前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...
- 资深程序员推荐必备书籍 《C语言程序设计》
当下,IT行业发展日趋迅猛,产值成倍增长,高薪的诱惑更是驱使许多人想要进入IT行业发展.为了使大家更全面理解C语言程序设计,由千锋教研院高教产品研发部编著.清华大学出版社倾情出版的<C语言程序设 ...
- C语言的宏macro的使用
C's Macro Introduction 1.The Connect Macros: ## 这是一个预处理连接符,这个操作符主要用来将两个符号连接成为一个完整的宏符号.通过下面的代码,可以看到其具 ...
- 从谭浩强的《C语言程序设计》到《电容应用分析精粹》
不记得具体从什么时候开始(反正很多年前的事了)的,不少人都陆续批评过谭浩强的<C语言程序设计>,各方面都有扒过.例如,与实践脱节,很多例子在不同编译器上运行是错误的,代码风格糟糕等等方面. ...
- C语言程序设计入门学习五步曲(转发)
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...
- 160809208沈昊辰c语言程序设计实验选择结构设计
<C语言程序设计>实验报告 学 号 160809208 姓 名 沈昊辰 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C区二层机房 ...
随机推荐
- 安装tensorflow出现问题的解法
在ubuntu14.04用pip安装tensorflow-gpu 安装1.3.0遇到问题 1.安装tensorflow出现Cannot uninstall 'six'.问题的解法 https://bl ...
- FuzzyAutocomplete代码模糊匹配智能提示
下载地址:https://github.com/FuzzyAutocomplete/FuzzyAutocompletePlugin Xcode 7.3.1 中已经对代码模糊匹配智能提示优化,已经不需要 ...
- springmvc+freemarker生成静态html文件
参考资料: http://mylfd.iteye.com/blog/1896501 http://www.cnblogs.com/xxt19970908/p/5553045.html 个人实践: 1. ...
- 转载SQL容易产生的错误问题
概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见问题,还有一些平时收集的其它一些问题,这也是很多人容易忽视的问题,在以后收集到的问题会补充在文章末尾,欢迎关注,由于收集的问 ...
- Linux安装bundle
安装bundle文件的方法: cd 到文件目录再用sudo chmod +x XXXXXXX.bundle 加权限最后 ./XXXXXXXX.bundle 就行了. 第一步:sudo chmod +x ...
- 处理执行sql语句
sqlplus / as sysdba @1.sqlsqlplus / as sysdba @2.sqlsqlplus / as sysdba @3.sql
- 自动构建工具Grunt
摘要: 大部分项目在部署之前都需要做的就是js.css文件的压缩.合并,以及一些文件的错误检查,甚至是将LESS文件转换成css文件,coffeescript文件转化成js文件等等.但是项目开发是分迭 ...
- c#直接调用ssis包实现Sql Server的数据导入功能
调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能.思前想后,决定还是贴一下增强记忆,高手请54. 1.直接调 ...
- Linux中实现多网卡绑定总结
在Linux中实现多网卡绑定 一.原理介绍: 1.什么是bonding? Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用.用于网络负载均衡及网络冗余: Li ...
- java.lang.IllegalArgumentException: No converter found for return value of type
原文地址: http://blog.csdn.net/linhaiguo/article/details/51554766 问题原因: 请求返回的数据无法转换,需要添加如下配置 解决方法: 1.在po ...