为什么只有原型而没有代码的C函数为什么被链接?

时间:2018-10-18 03:49:20

标签: atmelstudio

我有一个带有函数原型的头文件...

void setupEntry();

该函数是从链接到库中的main()中调用的,但是在项目中没有实际定义该函数。

当我链接项目时,它不会生成“未定义函数”错误。

当我查看.lss输出时,该函数在那里并且为空,最后只返回一个...

void setupEntry() {
     a6e:   08 95           ret

为什么/如何通过编译器或链接器一无所有地创建此空函数,而不是报告错误?

1 个答案:

答案 0 :(得分:0)

答案:退出并退出Atmel Studio。

因此,在花了一个小时试图解决这个问题后,我碰巧退出了Atmel Studio,然后重新加载了它……问题消失了。完全相同的代码和项目文件,但在重新加载后首次构建,并出现了预期的错误...

    libblinkos.a(blinkos.o): In function `run()':
    blinkos.cpp(243,1): error: undefined reference to `setupEntry()'

Atmel Studio中肯定存在一些错误或缓存问题。我想这课是退出并重新加载的频率更高。 :/