您的位置:首页 > 编程语言 > C语言/C++

学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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: