需求:
使用#if...#else...实现打印控制,开发人员能便捷的修改宏的判断条件,而不用关心宏的实现。
实现:
开关实现处,此处的头文件可放在公共头文件目录include中,供项目使用(
不能被C文件直接包含)。
debug.h:
-
#ifndef _SYSLOG_DEBUG_H
-
#define _SYSLOG_DEBUG_H
-
-
#ifndef _DEBUG_CONFIG_INCLUDE
-
#error "this file cannot be included by C file"
-
#endif
-
-
#if (_PRINT_ENABLE == 1)
-
#define LOG_PRINT(fmt, ...) printf(fmt, ##__VA_ARGS__)
-
#else
-
#define LOG_PRINT
-
#endif //_PRINT_ENABLE
-
-
#endif //_SYSLOG_DEBUG_H
开关控制处,此处的头文件可放在需要使用LOG_PRINT宏处。
debug_config.h:
-
#ifndef _DEBUG_CFG_H
-
#define _DEBUG_CFG_H
-
-
#define _DEBUG_CONFIG_INCLUDE
-
-
int _PRINT_ENABLE = 1:
-
-
/*following statement must at last*/
-
-
#include "debug.h"
-
-
#endif //_DEBUG_CFG_H
测试:
main.c:
-
#include <stdio.h>
-
#include "debug_config.h"
-
-
int main()
-
{
-
printf("start : \n");
-
-
LOG_PRINT("debug enable\n");
-
-
return 0;
-
}
总结:
将main.c和debug.c放在一起,开发人员通过修改debug.c的控制开关,实现宏定义的控制。
阅读(4757) | 评论(0) | 转发(0) |