C - 调用松散定义的函数时生成警告

时间:2014-10-03 14:01:36

标签: c gcc compiler-warnings

我想针对特定情况生成编译器警告。我正在构建一种基于几个预编译器定义构建的通用代码。例如,我可能会有以下内容。


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;并让开发人员决定是否需要该功能。

1 个答案:

答案 0 :(得分:1)

这个问题的答案很可能是编译器依赖的。

对于gcc等人,您可以使用__attribute__ ((deprecated))see gcc manual)。

对于Visual Studio,您可以使用__declspec(deprecated)