在乙個嵌入式稍微大些的工程中實現模組化控制列印輸出資訊是很有必要的,下面是模仿別人的實現的模組化列印,需要時可以根據下面的實現**去修改滿足自己所需要的!!!
#include
#include
#include
/* * @brief print switch definition
*/typedef
enum
log_switch_t;
/** * @brief print level definition
*/typedef
enum
print_level_t;
//函式指標
typedef
void
(*f_print_t)
(void
*handle,
const
char
*func,
int line, print_level_t level,
const
char
*message,..
.);/**
* @brief log context definition
*/typedef
struct
log_control_block_t;
void
print_module_log
(void
*handle,
const
char
*func,
int line, print_level_t level,
const
char
*message,..
.);/**
* @brief create log context for a module
*/#define log_create_module(_module, _level) \
log_control_block_t log_control_block_##_module = \
/** * @brief print info level log message
*/#define log_i(_module, _message, ...) \
do while(0)
/** * @brief turn on or off the print switch
*/#define log_config_print_switch(_module, _log_switch) \
do while (0)
void
print_module_log
(void
*handle,
const
char
*func,
int line, print_level_t level,
const
char
*message,..
.);switch
(level)
__builtin_va_list __local_ar**;
printf
("[%s %d %s]"
, my_level, line, log_cotrol_block->module_name)
; printf (message, __local_ar**);}
}int
main()
輸出結果:
C語言模組化程式設計
c語言模組化程式設計 模組劃分 c語言模組化程式 設計需理解如下概念 1 模組即是乙個.c檔案和乙個.h檔案的結合,標頭檔案 h 中是對於該模組介面的宣告 2 某模組提供給 其它模組呼叫的外部函式及資料需在.h中檔案中冠以extern關鍵字宣告 3 模組內的函式和全域性變數需在.c檔案開頭冠以sta...
C語言裡strcat函式的自我實現
c語言裡strcat函式的自我實現,strcat函式的作用是把乙個字串的內容追加到另乙個字串上,首字元代替 0 未優化版本 my strcat模擬實現 include void my strcat char arr1,const char arr2 while arr2 arr1 arr2 int ...
C語言之模組化程式設計
1 為什麼使用函式?函式就是功能 每個函式代表特定的功能,函式的名字應反應其代表的功能。2 怎麼定義函式?函式定義時需指定函式的型別 即函式返回值的型別。函式定義可大致分為以下三類 無參函式 型別名 函式名 void 可省略 有參函式 型別名 函式名 形參 空函式 程式設計時往往需要確定若干個模組,...