原文
 以下D代码正常工作:
enum X = "X";
import core.stdc.stdio;
void main(){puts(X);
}
但是,如果该X枚举是C文件中#define的结果,则会出现错误:
//`x.c`
#define X "X"
//D代码
import x;
import core.stdc.stdio;
void main(){puts(X); //错误
}
错误:不能用"(char[2])"参数类型调用"core.stdc.stdio.puts(scope const(char*)s)"函数
 无法传递"char[2]"类型参数的"X"给"scopeconst(char*)s"参数.
 是因为C字面是char[2]而不是const(char)[2].我会调查的.
 问题出在expressionsem.d(4188):
if (sc && sc.flags & SCOPE.Cfile)e.type = Type.tchar.sarrayOf(e.len + 1);
elsee.type = Type.tchar.immutableOf().arrayOf();
不确定解决方法及是否应该修复,毕竟C语义是不同的.
 虽然,作为变通,可以:
puts(X.ptr);