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