• C开发系列-预处理指令


    简介

    OC程序执行过程,在源代码编译成0跟1的二进制文件之前。执行的指令称之为预处理指令。
    所有的预处理指令都是以#开头。#import也是预处理指令。预处理指令主要分为三种

    预处理指令是有的作用域的:从编写指令的那一行开始,一直到文件的结尾。

    宏定义

    宏定义分为

    不带参数

    预处理指令#define,不带参数的宏定义可以用来定义一个常量。

    #import <Foundation/Foundation.h>
    #define COUNT 6
    int main(int argc, const char * argv[]) {
        
        for (int i=0; i<COUNT; i++) {
            NSLog(@"----------------");
        }
        return 0;
    }
    

    宏名一般用大写或者以k开头,变量名一般用小写

    带参数

    带参数的宏可以用来定义一些简单的固定的代码。

    #import <Foundation/Foundation.h>
    #define SUM(num1, num2) ((num1)+(num2))
    int main(int argc, const char * argv[]) {
        
        int ret = SUM(2, 3);
        
        return 0;
    }
    

    注意宏定义只是替换代码,在带有参数的宏定义为了严谨应该在参数加上括号。

    条件编译

    在很多情况下,我们希望程序中的一部分代码只在满足一定条件下才进行编译,否则不参与编译,这就是条件编译

    基本用法

    #if 条件1
        ...coder1...
    #elif 条件2
        ...coder2...
    #else
        ...coder3...
    #endif
    

    其他用法

    • 如果通过判断是否定义了某个宏来来决定是否参与编译;
    #if defined(宏)
        ...code...
    #endif
    

    条件取反的写法:如果前面没有定义指定的宏,就将代码编译进去。

    #if !defined(宏)
        ...code...
    #endif
    
    • #ifdef#ifndef的使用与上面基本一致
    #ifdef MAX
         ...code...
    #endif
    
    #ifndef MAX
         ...code...
    #endif 
    
  • 相关阅读:
    [Azure][PowerShell][ASM][03]Cloud Service
    linux ssh连接自动断开问题
    NTP服务器实现
    xshell使用小技巧
    elasticsearch集群部署
    redis集群部署
    积分排名查看
    linux centos7.2系统升级python后yum不能使用的问题
    Python生成器generator之next和send运行流程
    python文件操作
  • 原文地址:https://www.cnblogs.com/CoderHong/p/8833224.html
Copyright © 2020-2023  润新知