最近用到了FreeType,稍微看了一点源码,在初始化模块的时候看到了一个include的小技巧。
我在vs2010上面写了一个小例子。
include_file_function.h文件
#ifndef __INCLUDE_FILE_FUNCTION_H__
#define __INCLUDE_FILE_FUNTIONG_H__
FORCECHANGE(a)
FORCECHANGE(b)
FORCECHANGE(c)
#endif
include_file_function.c文件
/*************************************
**File name: include_file_function
**Description: 测试include文件的作用
**Author: **
**Data: 2013-2-25
*************************************/
#include <stdio.h>
unsigned int a = 1;
unsigned int b = 2;
unsigned int c = 3;
#define FORCECHANGE(x) (int *)&(x),
static int* mm[]=
{
#include"include_file_function.h"
};
void main(void)
{
unsigned int i = 0;
printf("&a = 0x%p\n", &a);
printf("&b = 0x%p\n", &b);
printf("&c = 0x%p\n", &c);
for(i = 0; i < 3; i++)
{
printf("mm[%d] = 0x%x\n", i, mm[i]);
}
}
结果为: