---1.##与#:
--------------在展开宏函数时 若出现#和## 则不再展开 否则先展开宏函数再展开当前宏 解决这个问题的办法即 定义一个中间宏使其展开
--------------ex:
#include <stdio.h>
#include <windows.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n", h(f(1,2)));
printf("%s\n",g(f(1,2)));
system("pause");
return 0;
}
---2.奇偶校验:
-------------------简单的奇(偶)校验则是取字节中的一位作为校验位 将各个二进制位想加 通过改变校验位达成和为奇(偶)的目的
-------------------todo:码距 海明校验 水平与垂直奇偶校验
---3.条件编译:
指令 用途
# 空指令,无任何效果
#include 包含一个源代码文件
#define 定义宏
#undef 取消已定义的宏
#if 如果给定条件为真,则编译下面代码
#ifdef 如果宏已经定义,则编译下面代码
#ifndef 如果宏没有定义,则编译下面代码
#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码,其实就是else if的简写
#endif 结束一个#if……#else条件编译块
#error 停止编译并显示错误信息
---4.头文件重复包含
--------------------------ex:
/**********************************
*********1.宏定义*****************
*********依赖于宏名称不同*******
*********************************/
#ifndef _TEST_H
#define _TEST_H
int a = 1;
int b = 2;
#endif _TEST_H
/**********************************
*********2.#pragma once*********
*********依赖于编译器************
*********************************/
#pragma once