我使用的是针对 8 位微 Controller 的 XC8 编译器。
这不会产生任何警告或错误,但无论如何都会挂起微 Controller :
uint8_t some_array[4];
uint8_t // no compile errors at all
some_function();
我注意到的另一件事是,预计这不会使微 Controller 崩溃,并且似乎返回 0:
printf("%c", some_function);
在这个函数中,我调用了一个永远不会返回 0 的函数。我忘记添加 () 但它会编译并以某种方式运行,但返回值错误。
最佳答案
函数的名称就是它的地址。(在这一点上,C 和 C++ 是相同的)。就像数组的名称就是它的起始地址一样。
&
用于获取变量的地址,但函数名称已经是地址。所以我们这里不需要“&”。
关于c - 这是编译器中的错误还是 C 正常工作方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29732458/