在C中,可以有一个字符串文字
char *string = "string here";
Run Code Online (Sandbox Code Playgroud)
整数文字:
uint8_t num = 5;
Run Code Online (Sandbox Code Playgroud)
长文字:
long long bigNum = 90322L;
Run Code Online (Sandbox Code Playgroud)
浮点文字:
float decimal = 6.3f;
Run Code Online (Sandbox Code Playgroud)
这是一种指针文字的方法吗?这是内存空间的文字地址.我正在做一些嵌入式项目的工作,需要硬编码DMA访问的值.我正在做类似以下的事情:
uint32_t *source = 0x08000000;
Run Code Online (Sandbox Code Playgroud)
虽然这编译并正常工作,我得到以下编译器错误(我正在使用的变体GCC):
cc0144: {D} warning: a value of type "int" cannot be used to initialize an entity of type "uint32_t *"
cc0152: {D} warning: conversion of nonzero integer to pointer
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法来做到这一点,或者我只需要接受这个作为C的事实?我知道我能做到:
uint32_t *source = (uint32_t *)0x08000000;
Run Code Online (Sandbox Code Playgroud)
但这似乎是非常不必要的.这样做的行业方式是什么?我也想知道C++中是否存在此功能.