我想爲特定情況生成編譯器警告。我正在構建一種基於幾個預編譯器定義構建的通用代碼。例如,我可能有類似以下的內容。C - 當調用鬆散定義函數時產生警告
sdcard.h
#ifdef PART_BOARD1
#include "port/board1.h"
#elif PART_BOARD2
#include "port/board2.h"
#endif
extern void sdcardConfigure(void);
sdcard.c
#ifndef FLAG_SDCARD
#warning "No SD Card available for this board, or this board has not been defined"
#define sdcardConfigure(...) void(0)
#endif
端口/ board1.h(端口/ board2類似)
#define FLAG_SDCARD
void sdcardConfigure(void);
端口/ board1.c
void sdcardConfigure(void) {
// sd card is configured here
}
基本上我想要做的就是修改#define sdcardConfigure(...)
聲明sdcard.c
讓我只看到,如果警告消息實際上調用了sdcardConfigure()
。使得它像:
void sdcardConfigure(void) {
#warning "sdcardConfigure() not available on this board"
}
的想法是,這給了我靈活地創建一個通用的(我知道很多人擔心通用)程序,它適應的是它使用的部分。 I.E.如果有SD卡使用它,否則產生一個警告「你正在調用這個部分不存在的函數」,並讓開發者決定是否需要這個函數。
什麼編譯器? – 2014-10-03 14:07:38
gcc版本4.8.2(Ubuntu 4.8.2-19ubuntu1) – user3817250 2014-10-03 14:19:28
確定 - 請參閱下面的答案 - 我還爲該問題添加了「gcc」標記。 – 2014-10-03 14:22:44