zoukankan      html  css  js  c++  java
  • 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 
    
  • 相关阅读:
    阿里云服务器配置
    linux 环境变量问题
    docker 常用操作
    docker 安装的nginx 的默认配置
    camera开发相关
    Ubuntu下使用Git
    Java web项目实现多附件上传
    Java web项目实现上传图片及时预览
    SQL Server游标【转】
    SQL Server游标的使用【转】
  • 原文地址:https://www.cnblogs.com/CoderHong/p/8833224.html
Copyright © 2011-2022 走看看