Ami*_*ekh 7 c pointers function pic xc8
我需要在地址 0xDD2 处调用一个函数:
// foo.h
void foo(void) __at(0xDD2);
// foo.c
#include "foo.h"
void foo(void)
{
// some code
}
Run Code Online (Sandbox Code Playgroud)
此代码有效:
#include "foo.h"
void main(void)
{
void (*a)(void) = &foo;
a();
}
Run Code Online (Sandbox Code Playgroud)
然而,这个没有:
#include "foo.h"
void main(void)
{
void (*a)(void) = (void (*)(void))(0x0DD2);
a();
}
Run Code Online (Sandbox Code Playgroud)
编译器 (XC8) 说:main.c:5:: warning: (759) expression generates no code调试器在调试时传递这些行。
我需要第二个(仅通过其地址调用函数)。为什么编译器会优化它?指针赋值有没有错误?更改编译器的优化级别没有帮助。