是否可移植/有效的C取消引用被视为地址的整数文字?即,如果我想在存储器地址0x12345678
一个64位的值设置为123
,是以下便携式和有效的C,至少由C89标准:适用于取消引用C中的整数指针字面值文字
*(uint64_t *)(0x12345678) = 123ULL;
我认为没有编译警告(通过gcc -std=c89 -Wall input.c
测试) ,但我记得在某些情况下,在将某个地址存储在一个中间变量而不是直接取消引用整数文字(已被转换为指针地址)的情况下,在这个主题上看到了一个问题。
你是什么意思便携式?我唯一一次做这样的事情就是在为嵌入式系统编程的时候,我确信我会在那个地址中找到。除此之外,没有可移植性。 – DeiDei