开发者

Accessing a C string from fixed Flash location

I have define a string at location 0xAABB:

const char str[] = "Hi There";  
const w开发者_开发百科ord _Str1 @0xAABB = (word)str;

Now, I want to access this string located at 0xAABB. What is the C syntax for this?


Just use a pointer to the memory location: const char *str = (const char *)0xAABB;

Edit: (based on your comment) You need to first get the address from location 0xAABB and then use this value as the string's address:

const char *str = *(const char **)0xAABB;

This will dereference the pointer at 0xAABB to get the actual string address.


#define ADDRESS_OF_YOUR_STRING  ((const char *)0xAABB)

const char *pointer_to_your_string = (const char *)0xAABB;

I could have used the macro in the pointer definition, but these are really intended to be separate demonstrations of how to do this. If you put the macro version in a header file and use it in your code the compiler will be able to optimize a little better. If you use a global pointer variable to access it then you may end up with the compiler needing to do an extra load of a pointer.

Using both of these is the same:

printf("%s\n", ADDRESS_OF_YOUR_STRING);

should work just fine since printf expects a pointer to a string for %s.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜