【 以下文字转载自 CProgramming 讨论区 】
发信人: lexluthor (lexluthor), 信区: CProgramming
标 题: 请问C能否做到编译时按const检查变量,但运行时可按照普通变量使用呢
发信站: 水木社区 (Mon Mar 4 11:27:48 2024), 站内
就是类似 const uint8_t tag[16]; 的变量
打算在初始化赋值的时候用类型转换赋值 memcpy((uint8_t *)tag, "0123456789012345", sizeof(tag));
但运行时直接 Segmentation fault 了,valgrind 报告如下错误:
==1014== Process terminating with default action of signal 11 (SIGSEGV)
==1014== Bad permissions for mapped region at address 0x406A70
应该是加了const后,变量tag被放入了只读字段了。
请教有没有既能利用 const 的编译时检查功能,又不让它放入只读字段的方法呢?谢谢。
--
FROM 51.222.204.*