1. 程式人生 > 實用技巧 >Keil中串列埠列印函式重定義snprintf()

Keil中串列埠列印函式重定義snprintf()

#ifndef _DEBUG_H__
#define _DEBUG_H__

#include "stdio.h"
#include "usart.h"

//#define DEBUG_PRINTF   //如果不需要串列埠列印資訊,將此巨集開啟

//  debug(...)中的'...'內容用__VA_ARGS__或##__VA_ARGS__替代 ,__VA_ARGS__和##__VA_ARGS__兩種寫法都可以
// C語言中以 ; 作為語句的結束,不以行為單位結束,當一行的內容太長不方便解除安裝一行時可使用反斜 槓"\"作為繼續符
//  注意巨集定義的中的語句,換行要加反斜槓'\'繼續符,表示上一語句緊挨著下條語句,
// 且反斜槓後面不要有任何註釋語句甚至空格,反斜槓前可以有空格 // 注意每條語句後面都新增反斜槓'\',否則會報錯 #ifndef DEBUG_PRINTF #define debug(...) {\ int len = 0;\ len = snprintf(debug_buf, 128, ##__VA_ARGS__); \ if(len > 0)\ {\ HAL_UART_Transmit_DMA(&huart2, (uint8_t *)debug_buf, len);\ }\ }
//到此不用加反斜槓 #else #define debug(...) {\ snprintf(debug_buf, 128, __VA_ARGS__);\ } #endif #endif //_DEBUG_H__