user3817250
user3817250

Reputation: 1043

C - Generate warning when loosely defined function is called

I'd like to generate a compiler warning for a specific situation. I'm building a sort of universal code that will be built based on several pre-compiler definitions. For instance I might have something like the following.


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 (similar for port/board2)

#define FLAG_SDCARD
void sdcardConfigure(void);

port/board1.c

void sdcardConfigure(void) {
    // sd card is configured here
}

Essentially what I'd like to do is modify the #define sdcardConfigure(...) statement in sdcard.c so that I'm only seeing the warning message if sdcardConfigure() is actually called. Making it act like:

void sdcardConfigure(void) {
    #warning "sdcardConfigure() not available on this board"
}

The idea being that this gives me the flexibility to create a universal (I know many fear universal) program that adapts to the parts that it's using. I.E. if there is an SD Card use it, otherwise generate a warning saying "you're calling a function that doesn't exist for this part" and let the developer decide if the function is needed.

Upvotes: 0

Views: 167

Answers (1)

Paul R
Paul R

Reputation: 212979

The answer to this will most-likely be compiler-dependent.

For gcc et al you can use __attribute__ ((deprecated)) (see gcc manual).

For Visual Studio you can use __declspec(deprecated).

Upvotes: 1

Related Questions