解决嵌套宏链接错误

时间:2018-04-04 07:15:23

标签: c macros linker

我收到链接错误,因为函数在.h文件中声明,但其定义已注释。 以下是链接错误:           ---链接错误---           错误:L6218E:未定义的符号clk_SetHMSSAPMFreqPlan(引用           来自VVDRV_clk_glue.o)。

现在,调用函数的文件有多个嵌套if块,如下所示:

 #if defined(COMPILING_APPS_PROC) || defined(COMPILING_SPM_PROC)
 #ifndef AXF_BUILD
    eClkResult clk_SetFreqPlan(eClockFrequencyType eFreqPlan, uint32 eSubsystemLists) {
      ----some code----
        #if defined(COMPILING_APPS_PROC) && !defined(AXF_BUILD)
            clk_SetHMSSAPMFreqPlan(0, eFreqPlan); /* This function is giving a linking error */
        #endif
 #endif /*AXF_BUILD*/
 #endif /*COMPILING_APPS_PROC*/

为了克服链接错误,我在文件顶部声明宏:             #ifndef AXF_BUILD             #define AXF_BUILD 1             #ENDIF

因为必须保持定义另一个宏COMPILING_APPS_PROC,所以我无法改变它。

由于现在定义了AXF_BUILD,我期望函数clk_SetHMSSAPMFreqPlan(0,eFreqPlan)不会被编译,编译应该是干净的。但是,我仍然得到相同的链接错误。可能是什么原因?

0 个答案:

没有答案