•   #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 是新增的关键字。
  • 相关阅读:
    国家标准比例尺地形图说明(摘要自SuperMap Objects Document)
    常用日期函数
    CMD执行BCP命令
    如何利用.snk文件生成DLL文件中的Publickeytoken
    SQL SERVER数据库的表中修改字段属性被阻止“Prevent saving changes that require table recreation”
    如何生成DLL文件
    如何反编译DLL文件
    Visual Studio 2022激活密钥
    sqlserver跨数据库查询
    jQuery对象与DOM对象之间的转换
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/10977092.html
Copyright © 2020-2023  润新知