假设我在 temp.h 中声明了一个结构,如下所示:
/* physical memory */
typedef struct pmem_struct {
uint32_t val;
} pmem_s, *pmem_p;
假设我在我的 temp.c 文件中的方法 pmem_p pmem_new() 中声明了这个结构,如下所示:
pmem_p pmem_new() {
pmem_s pmems;
pmem_p pmem = &pmems;
pmem->val = 0;
//printf(stderr, "From Mem: %x\n", pmem->val);
return pmem;
}
现在这是我的 main.c 文件:
#include <stdio.h>
#include "temp.h"
#include "gen.h"
int main() {
pmem_p pmem = pmem_new(); /* create some physical memory */
fprintf(stderr, "From Mem: %x\n", pmem->val);
......
}
为什么这个 fprintf 会打印出From Mem: 4019cff4,除非我取消注释 pmem_new() 中的 fprintf 行,两者都正确打印出From Mem:0