我想针对特定情况生成编译器警告。我正在构建一种基于几个预编译器定义构建的通用代码。例如,我可能会有以下内容。
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
port / board1.h(类似于port / 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卡使用它,否则会产生一个警告说“你正在调用这个部分不存在的功能”#34;并让开发人员决定是否需要该功能。
答案 0 :(得分:1)
这个问题的答案很可能是编译器依赖的。
对于gcc等人,您可以使用__attribute__ ((deprecated))
(see gcc manual)。
对于Visual Studio,您可以使用__declspec(deprecated)
。