•   #define用于定义宏,宏在源代码展开时被处理。

    #define 中使用参数

    #define ADD(x,y) x+y 

    用宏创建字符串

    #define PSOR(X) printf("sasds "#X"  ")
    
    int main()
    {
    
    PSOR(12);
    
    return 0;
    }

    预处理粘合剂:##运算

    #define XNAME(n)  x ## n
    #define PRINT_INT(n) printf(" "x" #n " = %d
    ",x ## n)
    
    int main()
    {
    int XNAME(1) = 14;// int x1 = 14
    PRINT_INT(1); // printf("x1 =%d
    ",x1);
    
    return 0;
    }

    变量宏...和_ _VA_ARGS_ _

    #define PR(...) printf(_ _ VR_ARGS_ _)
    #define PR(X,...) printf("Message " #X " : " _ _VA_ARGS_ _ )
    

      #include 指令用于包含其他文件

    #include<stdio.h>  在系统目录中寻找该文件

    #inclde"mystuff.h" 在当前目录中寻找该文件

    #undef 用于取消已定义的#define指令

    #define LIMIT 400
    
    #undef LIMIT

    条件编译

    #ifdef,#else,#endi,#ifndef

    #if,#elif

    #if指令很像C语言中的if,#if后面跟整形常量表达式,如果表达式为非零,则表达式为真。

    #if SYS == 1
        #include "ibmpc.h"
    #elif SYS == 2
        #include "mac.h"
    #else
        #include "general.h"
    #endif

    预定义宏

    含义
    _ _DATE_ _ 预处理日期("Mmm dd yyyy形式的字符串字面量",如Nov 23 2013)
    _ _FILE_ _ 表示当前源代码文件名的字符串字面量
    _ _LINE_ _ 表示当前源代码文件中行号的整型变量
    _ _STDC_ _ 设置为1事,表示实现遵循C标准
    _ _STDC_HOSTED_ _ 本机环境设置为1,否则设置为0
    _ _STDC_VERSION_ _ 支持99标准,设置为199901L,支持11标准,设置为201112L
    _ _TIME_ _ 翻译代码的时间,格式为"hh:mm:ss"

    C99标准提供了一个名为_ _func_ _的预定义标识符,它展开为一个代表函数名的字符串

    int main()
    {
    
    printf("cur func is %s",_ _func_ _); //输出main
    return 0;
    }

    #line 和 #error

    #line 指令重置_ _LINE_ _和_ _FILE_ _宏报告的行号和文件名。

    #line 100 //把当前行号重置为100
    #line 10 "cool.c" //行号重置为100 文件名重置为cool.c

    #error可以让预处理器发出一条错误信息,如果可能的话,编译过程应该中断。

    #if _ _STD_VERSION_ _  != 201112L
    
    #error Not c11
    
    #endif

    #pragma

    在现代编译器中,可以通过命令行参数修改编译器一些设置,#pragma把编译器指令放入源代码中,例如,在开发C99时,标准称为C9X,可以使用下面这个指令让编译器支持C9X。

    #pragma c9x on

    一般而言,编译器都有自己的编译指示集,例如,编译指示可能用于控制分配给自动变量的内存量,或者设置错误检查的严格程度,或者启动非标准语言特性等。

    泛型选择

    泛型编程是指那些没有特定类型,但是一旦指定一种类型,就可以转换成指定类型的代码。例如,C++中的模版中可以创建泛型算法,然后编译器自动根据指定的类型自动使用实列化代码。C11新增了泛型选择表达式。

    #define MYTYPE(X) _Generic((X),int :"int",default:"other")
    _Generic 是新增的关键字。
  • 相关阅读:
    整合springmvc+spring+mybatis
    springmvc 登录拦截器
    Python3.6.5 Win10安装numpy,scipy,scikit-learn,matplotlib
    windows+mysql+python+navicat入坑指南
    TP5 paginate()分页后给结果集追加字段和数据
    cropper+php+ajax 上传头像
    PHP base64转换成图片
    Echarts通过Ajax实现动态数据加载
    用php获取当天年份、月份、日及天数
    jquery对json 键值对或数组的增加、删除、遍历操作
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/10977092.html
Copyright © 2020-2023  润新知