• 标C编程笔记day04 预处理、宏定义、条件编译、makefile、结构体使用


    预处理:也就是包括须要的头文件,用#include<标准头文件>或#include "自己定义的头文件"

    宏定义,如:#define PI 3.1415926
    查看用宏定义的值替换宏名称,如:gcc -E test.c
    带參数的宏:MAX(x,y) (x)>(y)?

    ((x):(y))   //用法与函数一样
    宏运算:
        #define PRINT(n) printf(#n"=%d",n)   //#n 就是把传入的变量值作为字符串放在那里
        #define MAX(type) type max_##type()  //##n就是把变量的值作为函数名的一部分
        #define MKID(n) i_##n                //##n就是把变量的值作为变量名的一部分

    C语言中提前定义的宏:
        _LINE_ 当前正在编译的行号:%d
        _FILE_ 正在编译的源程序名:%s
        _DATE_ 编译程序的日期:%s
        _TIME_ 编译程序的时间:%s
        _STDC_ 推断编译器是否符合c标准,返回0或1:%d
    条件编译:
        #define TEST 1
        #if TEST
            //TEST为真时运行的代码
        #endif
        
        #ifndef ABC_H  //假设没定义,就定义宏
        #define ABC_H
        //头文件定义
        #endif
        
        #ifdef ABC_H  //假设定义了宏,取消定义
        #undef ABC_H
        #endif

        推断:          if defined(TEST) && !defined(ABC_H){    }
        if……else……语法:#if …… #elif……#elif……#else……#endif

    编译时。參数  -D 可随时定义宏。



    声明使用外部变量的方法:exterm int speed;//speed为外部变量名

    编写makefile文件批量编译的语法,演示样例:
    main:main.o test.o test.h  //冒号前台的是生成的目标。后面的是依赖的文件
        gcc main.o test.o -o main  //编译的详细语句
    main.o:main.c
        gcc -c main.c
    test.o:test.c
        gcc -c test.c
    clean:
        rm *.o

    用法 。能够使用make 编译所有,也可使用make main.o 生成 main.o,使用make test.o 生成 test.o ,make clean 删除编译生成的.o文件。
    结构体长度计算演示样例(自己主动补齐):
    总长度为最长数据类型字节的整数倍。
    struct student//总长28。是4的整数倍,所以终于大小为28字节
    {
        int ID;//4字节
        char name[20];//数组 ,每一个字符1字节,共20字节
        int age;//4字节
    };

    typedef struct//总长18字节,要是4的整数倍。大于10且是4的整数倍的数是20,所以终于大小为20字节
    {
        int ID;//4字节
        char name[10];//数组 ,每一个字符1字节,共10字节
        int age;//4字节
    }student;
    结构体变量的定义和使用:
        struct student s; 或 struct student s={101,"zs",20};//定义时总体赋值
        s.ID=101;//单个赋值
        strcpy(s.name,"zs");//字符数组赋值

  • 相关阅读:
    如何计算时间复杂度
    注意线程
    java中一个类要当作线程来使用有两种方法
    压缩和解压
    init [0123456]
    linux文件目录
    为什么使用combiner?【Hadoop】
    JAVA标识符
    关键字:java
    转 java 中int String类型转换
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7191489.html
Copyright © 2020-2023  润新知