代码之家  ›  专栏  ›  技术社区  ›  user2986042

C编译错误“调用的对象不是函数或函数指针”

  •  -1
  • user2986042  · 技术社区  · 10 月前

    我从网上得到了一段C代码,我正在尝试编译它。我收到了以下错误。

    error: expected declaration specifiers or '...' before ')' token
        6 | extern FUNC(void, MY_CODE) MyLatestUpdate()(void);
          |                          ^
    ERROR!
    /tmp/RkrMFH0deT.c: In function 'main':
    /tmp/RkrMFH0deT.c:11:41: error: called object is not a function or function pointer
       11 | #define STD_ON                          1u
          |                                         ^~
    

    下面是代码片段

    .h文件中

    #define MY_CODE
    
    extern FUNC(void, MY_CODE) MyLatestUpdate()(void);
    

    在另一个.h文件中

    #define MyLatestUpdate()    MyPreValue()
    #define MyPreValue()        UPDATE_VALUE
    #define UPDATE_VALUE        STD_ON
    #define STD_ON              1u
    

    在.c文件中

    int main() {
        // Write C code here
        MyLatestUpdate()();
        printf("test code");
        return 0;
    }
    

    我似乎在.h文件中遇到了错误

    extern FUNC(void, MY_CODE) MyLatestUpdate()(void);
    
    error: expected declaration specifiers or '...' before ')' token
    

    函数是声明为函数指针还是函数宏?我该如何解决这些问题?任何帮助

    1 回复  |  直到 10 月前
        1
  •  0
  •   gnasher729    10 月前

    MyLatestUpdate被预处理器转换为1u。您尝试编译

    extern FUNC (void, ) 1u()(void);
    

    这完全是无稽之谈。