可以使用指针访问Embedded C++上内存位置的内容.
int *p;
p = (int*) 0x30610000;
我需要编写一个程序,将存储在内存位置的两个数字相加.
int *p;
int *q;
p = (int*) 0x30610000;
q = (int*) 0x30610004;
int sum=(*p)+(*q)
上面的代码正确吗?
我需要了解如何在嵌入式C++上访问内存位置的内容.
可以使用指针访问Embedded C++上内存位置的内容.
int *p;
p = (int*) 0x30610000;
我需要编写一个程序,将存储在内存位置的两个数字相加.
int *p;
int *q;
p = (int*) 0x30610000;
q = (int*) 0x30610004;
int sum=(*p)+(*q)
上面的代码正确吗?
我需要了解如何在嵌入式C++上访问内存位置的内容.
你问它是不是"correct",然后在 comments 中问它是不是"good practice".这是两个不同的问题.它在句法和语义上都是正确的(除了缺少的分号).这是否是好的做法取决于具体情况,在某种程度上也是一个意见问题.您几乎没有提供任何背景来得出观点,但请考虑以下内容:
volatile
, const volatile int* p = (const volatile int*)0x30610000 ;
使用宏来表示地址上的值可能在语法上更清晰,例如:
#define p (*(volatile int*)0x30610000)
#define q (*(volatile int*)0x30610000)
int sum = p + q ;
但这可能会被视为一种混淆.您通常会通过将约定宏命名为传统的大写形式来澄清这类代码,而P
和Q
实际上并不能将其截断.清晰或有意义.名称应反映所存储数据的用途或性质
如果值是硬件寄存器,则使用stdint.h类型,数据类型可能显式匹配寄存器宽度.