学ios需要了解的C语言基础知识-9-预处理指令宏定义啥的
2014-08-27 22:48
656 查看
预处理指令宏定义啥的
预处理指令:在编译前进行解析处理指令
所有预处理指令都是以#开头
所有的预处理指令都可以写文件任意位置,它们都和{}无关
所有的预处理指令后面都不用写分号
宏定义
不带参数的宏定义
带参数的宏定义
条件编译
文件包含
#include <stdio.h>
//定义格式 #define 宏名 值
//1、宏名的命名规范:1、全部大写多个单词中间使用_分隔 2、k开头的驼峰标示
//2、作用:在代码编译之前所有出现宏名标示的地方都会被替换成宏名后面的值
//3、宏定义的作用域:从定义那一行开始直到文件结束或取消该宏定义的地方
#define LENGTH 5
int main(int argc, const char * argv[])
{
"LENGTH";//字符串中的宏名是不会替换的 LENGTH
int nums[LENGTH] = {10,20};
// int len = sizeof(nums) / sizeof(int);
#undef LENGTH // 取消宏定义
for (int i = 0 ; i < LENGTH; i++) {
printf("%d\n",nums[i]);
}
return 0;
}
//带参数的宏定义: #define 宏名(参数列表) 参数表达式
/*
1、带参数的宏定义参数列表中不要加类型
2、宏名后的()与表达式之间必须要有空格
3、宏名与其后的()中间不可以有空格
4、带参数的宏定义至少把传入参数带入后面的参数表达式中,替换出现带参数的宏的地方
5、带参数的宏定义只是做了一个简简单单的替换,它不会进行任何运算
6、当我们去写一个带参数的宏定义的时候,把每一个参数和结果都需要加上()
7、如果我们做带参数的宏定义的题时候,就宏定义后面的表达直接拷贝到代码中做一个简单替换,然后算出结果就OK了
*/
#include <stdio.h>
#define SUM(a,b) (a + b)
#define PIF(x) ((x) * (x))
int sum(int a,int b)
{
return a + b;
}
int main(int argc, const char * argv[])
{
// int result = sum(10, 20);
// int a = 10;
// int b = 20;
// int result = SUM(1, 2) * SUM(2, 1);
// int result = 1 + 2 * 2 + 1;
int result = PIF(2) + PIF(2);
result = PIF(2) / PIF(2);
result = PIF(2 + 2);
printf("%d\n",result);
return 0;
}
//
//条件编译:在程序编译的时候,如果满足条件,那么后面的语句就参与编译,如果不满足条件那么后面的语句就不参与编译
//条件编译后面的条件表达式中不能识别变量,它里面只能识别常量和宏定义
#include <stdio.h>
//if语句:在程序运行的时候,如果条件满足就执行该条件后面的语句
#define DEBUG 1
#if DEBUG == 0
//可变参数的宏定义
//##表示可以没有参数
#define Log(format,...) printf(format,## __VA_ARGS__)
#else
#define Log(format,...)
#endif
void test2();
int main(int argc, const char * argv[])
{
//#undef DEBUG
#ifdef DEBUG
printf("DEBUG\n");
#endif
#ifndef DEBUG
printf("没有定义DEBUG\n");
#endif
#if defined(DEBUG)
printf("DEBUG\n");
#endif
Log("haha \n");
test2();
return 0;
}
void test2()
{
Log("hehe\n");
}
void test()
{
int a = 5;
// if (a == 5) {
// printf("a = 5\n");
// }else if (a == 6){
// printf("a = 6\n");
// }else if ( a == 7){
// printf("a = 7\n");
// }else{
// printf("其他\n");
// }
#define a 5
#if a == 5
printf("a = 5\n");
#elif a == 6
printf("a = 6\n");
#elif a == 7
printf("a = 7\n");
#else
printf("其他\n");
#endif
}
预处理指令:在编译前进行解析处理指令
所有预处理指令都是以#开头
所有的预处理指令都可以写文件任意位置,它们都和{}无关
所有的预处理指令后面都不用写分号
宏定义
不带参数的宏定义
带参数的宏定义
条件编译
文件包含
#include <stdio.h>
//定义格式 #define 宏名 值
//1、宏名的命名规范:1、全部大写多个单词中间使用_分隔 2、k开头的驼峰标示
//2、作用:在代码编译之前所有出现宏名标示的地方都会被替换成宏名后面的值
//3、宏定义的作用域:从定义那一行开始直到文件结束或取消该宏定义的地方
#define LENGTH 5
int main(int argc, const char * argv[])
{
"LENGTH";//字符串中的宏名是不会替换的 LENGTH
int nums[LENGTH] = {10,20};
// int len = sizeof(nums) / sizeof(int);
#undef LENGTH // 取消宏定义
for (int i = 0 ; i < LENGTH; i++) {
printf("%d\n",nums[i]);
}
return 0;
}
//带参数的宏定义: #define 宏名(参数列表) 参数表达式
/*
1、带参数的宏定义参数列表中不要加类型
2、宏名后的()与表达式之间必须要有空格
3、宏名与其后的()中间不可以有空格
4、带参数的宏定义至少把传入参数带入后面的参数表达式中,替换出现带参数的宏的地方
5、带参数的宏定义只是做了一个简简单单的替换,它不会进行任何运算
6、当我们去写一个带参数的宏定义的时候,把每一个参数和结果都需要加上()
7、如果我们做带参数的宏定义的题时候,就宏定义后面的表达直接拷贝到代码中做一个简单替换,然后算出结果就OK了
*/
#include <stdio.h>
#define SUM(a,b) (a + b)
#define PIF(x) ((x) * (x))
int sum(int a,int b)
{
return a + b;
}
int main(int argc, const char * argv[])
{
// int result = sum(10, 20);
// int a = 10;
// int b = 20;
// int result = SUM(1, 2) * SUM(2, 1);
// int result = 1 + 2 * 2 + 1;
int result = PIF(2) + PIF(2);
result = PIF(2) / PIF(2);
result = PIF(2 + 2);
printf("%d\n",result);
return 0;
}
//
//条件编译:在程序编译的时候,如果满足条件,那么后面的语句就参与编译,如果不满足条件那么后面的语句就不参与编译
//条件编译后面的条件表达式中不能识别变量,它里面只能识别常量和宏定义
#include <stdio.h>
//if语句:在程序运行的时候,如果条件满足就执行该条件后面的语句
#define DEBUG 1
#if DEBUG == 0
//可变参数的宏定义
//##表示可以没有参数
#define Log(format,...) printf(format,## __VA_ARGS__)
#else
#define Log(format,...)
#endif
void test2();
int main(int argc, const char * argv[])
{
//#undef DEBUG
#ifdef DEBUG
printf("DEBUG\n");
#endif
#ifndef DEBUG
printf("没有定义DEBUG\n");
#endif
#if defined(DEBUG)
printf("DEBUG\n");
#endif
Log("haha \n");
test2();
return 0;
}
void test2()
{
Log("hehe\n");
}
void test()
{
int a = 5;
// if (a == 5) {
// printf("a = 5\n");
// }else if (a == 6){
// printf("a = 6\n");
// }else if ( a == 7){
// printf("a = 7\n");
// }else{
// printf("其他\n");
// }
#define a 5
#if a == 5
printf("a = 5\n");
#elif a == 6
printf("a = 6\n");
#elif a == 7
printf("a = 7\n");
#else
printf("其他\n");
#endif
}
相关文章推荐
- 学ios需要了解的C语言基础知识-3-分支结构循环结构
- 学ios需要了解的C语言基础知识-1
- 学ios需要了解的C语言基础知识-7-指针和指针与字符串函数
- 学ios需要了解的C语言基础知识-10-内外部函数,内外部变量
- 学ios需要了解的C语言基础知识-2-运算符
- 学ios需要了解的C语言基础知识-4-进制
- 学ios需要了解的C语言基础知识-5-函数
- 学ios需要了解的C语言基础知识-8-结构体、枚举、typedef啥的
- 学ios需要了解的C语言基础知识-11-C语言精华总结
- 大前端开发者需要了解的基础编译原理和语言知识
- 大前端开发者需要了解的基础编译原理和语言知识
- IOS 开发进阶--多线程和网络--多线程的基础知识的了解
- 黑马程序员---iOS学习基础---C语言基础知识回顾
- LINUX初学者需要了解的基础知识
- ios之C语言基础知识串联
- 黑马程序员——IOS基础之C语言---C语言基础知识介绍
- c语言学习之基础知识点介绍(二十):预处理指令
- iOS笔记:第一篇 C语言基础知识
- 编译型语言和解释型语言的区别和优劣(基础知识了解)
- ios开发学习笔记001-C语言基础知识