原文 如下无法编译:
// test.c
static int *do_something(int * const p){
int * const data = p;
*data = 2; // 错误:无法修改`'*data'常'`表达式
return 0;
}//从sqlite中化简.
不知道该怎么办,因为const在ImportC中是传递性的.
保持现状或忽略常都错误,但这允许更多正确的程序成功编译.
刚刚产生的想法:D假装C头常是可变的.实践中,始终要复制,因为可假定代码已在现有的C编译器上编译了,而实现并不受影响.这要归功于亚当的创意.
所以,在该示例中,'int*常 p'就变成了'int*p',其他同样.
可在AST中注解常,以便确保头常.
是的,头常之下都可保持传递性,这会拒绝一些有效的C代码,但会避免无效的D代码,这是公平的妥协.
直觉,一般都是可行的,剩下情况,则显式强制转换.










