开发语言类 -- C


*--- 要点 ---*

1.  预编译指令 、ANSI标准宏
2.  字节对齐
3.  关键字
4.  可变形参列表
5.  assert


*--- 详解 ---*


*--- 代码 ---*
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>  //va_list
#include <assert.h>  //assert

#define _DEBUG_INFO_
#define AUTHOR "Jarvis"


//预处理指令
void pre_instructions()
{
    printf("预处理指令\n");
#ifdef _DEBUG_INFO_
    printf("Debug_Info: Program Starting...\n");
#else
    printf("Program Starting...\n");
#endif

    printf("%s\n %s\n %s\n",AUTHOR,__FILE__,__DATE__);
}

//可变形参列表
//num代表可变参数的个数,类型全部默认为int型
void variable_list(int num,...)
{
    int i=0,var;
    printf("\n可变形参列表...\n");

    va_list ls;
    va_start (ls,num);          //获取可变参数列表的首地址,赋值给ls

    while(i<num){
        var = va_arg(ls,int);//返回类型为double的的可变参数值,并使ls指向下一个可变参数
        printf("参数%d:%d\n",++i,var);
    }
    va_end(ls);                //结束
    printf("\n");
}

//字节对齐
void align()
{
    struct man{
        int age;
        char gender;//m or f
    };
    int size;
    struct man me;
    me.age = 24;me.gender = 'm';

    printf("\n字节对齐\n");
    size = sizeof(me);
    printf("size:%d \n",size);
}

//关键字
void key_words()
{
    printf("\n关键字\n \
            sizeof   是关键字,不是函数或宏\n \
            volatile 告诉编译器不要对变量优化\n \
            register 类型变量不能取地址\n");
}

//assert 宏
void test_assert(char* name)
{
    assert(NULL != name);//检验指针

    printf("\n%s\n",name);
}

int main()
{
    pre_instructions();     //预处理指令
    variable_list(3,1,2,3); //可变形参列表
    align();                //字节对齐
    key_words();            //关键字

    assert(NULL);           //assert宏
    return 0;
}

接触技术越多越久,很多要点都会模糊忘却,该系列文章甚为浅显,只作为帮助博主个人快速回忆起某技术概况的简易笔记,高手自觉飘过。

你可能感兴趣的:(开发语言类 -- C)