pigy0754 发表于 2013-4-24 13:01:27

结构链表,存在AVR的程序存储器中的疑问

大家好,刚使用AVR的芯片,把以前的程序移植过来。
但是有点疑问:AVR存在程序存储区的常量,没法像RAM中的一样直接用指针访问么(好像要用对应的读取函数按字节,双字节....这样读取的)?如果要实现如下功能要怎么办呢?谢谢!
程序中有如下链表常数
extern void func1(void);
extern void func2(void);
......
extern void func10(void);

typedef struct _node
{
      char   val;
   void(*func)(void);
   node*next;
}node;

/* 以下结构存在程序存储区 */
const nodetmp1 = {1,func1, &tmp2};
const node tmp2 = {2, func2,&tmp3};
...............
const node tmp10 = {10,func10, NULL };

const char cstr = "abcdefghijk.......";

void main(void)
{
      node *p = tmp2;
      char*pchar = cstr;
      char tmp;

   p->func();    //这样可以么???


   tmp = *pchar++;    //这样可以么???
   tmp = *pchar++;    //这样可以么???
}

绿茶山人 发表于 2013-4-27 13:02:23

你说的都可以,const是只读变量,和常量有区别。
页: [1]
查看完整版本: 结构链表,存在AVR的程序存储器中的疑问