在ADS编译环境下定义一个指向字符串的指针(全局变量)
char *p = "123";
指针p本身存放于内存中 但是字符串"123"系统默认为const型的数据 在code区自动被创建并被初始化 然后将地址赋给p 如果通过*p去修改目标地址的内容 编译器将会报错 我在AXD环境下的内存空间看过 p的值是flash区的地址 肯定是只读的。
相信上述概念很好理解 那么同样的语句在IAR编译环境下
char *p = "123";
这个字符串"123"被系统默认为data区的 在内存上被创建并被初始化
我通过IAR的编译器关键字设置定义 char __flash *p 我的目的就是想让字符串存放在flash区 这样可以节省内存 但是IAR编译器似乎不支持这样做
当然理论上给一个__flash指针赋值可以分两部
char __flash a[] = "123";
char __flash *p = a;
概念我是知道 但我要的效果是 给p赋值的时候 直接写"123"字符串 而不是先定义一个数组再赋值给p
有人知道怎么解决么 熟悉IAR的高人 求解 |