Embedded C - Too many arguments to function (pointer)

前端 未结 4 663
刺人心
刺人心 2020-12-19 11:57

I am trying to invoke the following macro in my .cpp file:

#define IAP_ROM_LOCATION                0x1FFF1FF1UL
#define IAP_EXECUTE_CMD(a, b)           ((voi         


        
4条回答
  •  庸人自扰
    2020-12-19 12:45

    For readability, define a signature for the function to be called:

    typedef void signature_t(int, int);
    

    Then you can cast your ROM location

    #define IAP_EXECUTE_CMD(a, b)  ((signature_t*)IAP_ROM_LOCATION) ((a),(b))
    

    and with a recent GCC (current version of GCC is 4.6) I would make that an inline function

    static inline void iap_execute_cmd(int a, int b) {
        ((signature_t*)IAP_ROM_LOCATION) ((a),(b));
    }
    

提交回复
热议问题