预处理编译-宏-define
来源:互联网 发布:java通用版游戏 编辑:程序博客网 时间:2024/05/16 06:20
预处理
//
// main.c
// pre_sccess
//
// Created by qianfeng on 14-11-3.
// Copyright (c) 2014年 qianfeng. All rights reserved.
//
#include<stdio.h>
#define ZOE0+0
#define PI(a)2.1415926+a
//#undef PI 表示在undef以上的PI宏都被注销,无效。
#undef PI
//定义字符串宏函数:
#define STR(a) #a
#define STR_PRO(a,b) #a #b
//“#”有些能够连续使用,有些不可,它的特殊性是取决于编译器。
//宏的有参算术,需要添加双重括号:#define sum(a,b) ((a)+(b))才能保证算术的正确
#define sum(a,b) (a+b)
#define sum_pro(a,b) a+b
//#__FILE__
//#__DATE__
//#__TIME__
//#__LINE__
//#__func__
//最新定义的宏名会把它上面定义的相同宏名覆盖掉,从而导致上面定义的宏无法使用。
#define PI100
//编译hello.c:llvm-gcc -o hello.i -E hello.c
//重复编译hello.c:!llvm
//vim编辑文件
int main(int argc,constchar * argv[]) {
//预处理不会对“宏变量”进行任何操作,只进行简单的“文本”替换
//宏不可递归定义:#define P9 P9+1;
// 对: printf("%d\n",ZOE);预处理:printf("%d\n",0+0);
//宏变量在定义过程中,不可虽已添加空格,最好能省则省。
printf("Hello, World!\n");
int i =ZOE;
printf("OK.%s\n",STR(qianfeng));
printf("OK.%s\n",STR_PRO(qian,feng));
printf("%d\n",i);
printf("%d\n",ZOE);
printf("%d\n",PI);
//宏,条件编译:满足条件通过预编译,不满足不通过,在进入编译之前不满足条件的源码就已经被删除了。#if condition(条件的值:x>0为真,否则为假);
//所以软件通常有两个版本,预编译后的“.i”文件和预编译前的“.c”文件(bug版本)
#if100
printf("sum(a,b) = %d\n",5*sum(2,2));
#elif0
printf("sum_pro(a,b) = %d\n",5*sum_pro(2,2));
#endif
return0;
/*
输出:
Hello, World!
OK.qianfeng
OK.qianfeng
0
0
100
sum(a,b) = 20
Program ended with exit code: 0
*/
}
- 预处理编译-宏-define
- 编译预处理--#include包含指令, #define宏定义指令, #if条件编译指令
- 预处理(二)#define宏替换
- 预处理#define
- typedef(编译时处理)和define(预处理)
- C编译预处理宏
- 预处理 宏及编译
- 预处理命令之#define
- 预处理器(#define)
- 预处理 const #define
- 预处理指令define
- 预处理程序--#define 语句
- 预处理指令(2) - #define
- #define预处理的弊端
- 预处理程序 #define
- 预处理指令--define
- 宏编译 预处理头 WIN32_LEAN_AND_MEAN
- gdb define查看一个宏(C预处理宏)
- Redis入门经典——The Little Redis Book (翻译)
- iphone ipad 开发应用内实现多语言自由切换
- 学习笔记
- 理解Latency和Throughput
- python easy_install 发生Unable to find vcvarsall.bat错误的处理方法
- 预处理编译-宏-define
- Intent的属性Data和Type
- activity跳转后关闭父activity
- struts2与hibernate整合实例
- 聊聊高并发(十六)实现一个简单的可重入锁
- Leetcode: Sum Root to Leaf Numbers
- android中的文件操作详解以及内部存储和外部存储
- 深入了解字符集和编码问题
- MAC OSX eclipse 安装svn插件 提示 Failed to load JavaHL Library