typedef const struct{ const int n; }A;
const int num = 7;
A a = { num };
报错! c的编译环境,请高手指教阿!!!
都说了要在c环境下编译阿,c++可以编译早晓得了。。。不是什么;号之类的低级错,就想知道有没有办法在num前面cast个什么让它成功
追答呵呵,那是编译器的名字 DEV C++
写的程序就是用C编译运行的。
现在的较新版本的C编译器都支持上面的程序写法
不知道你用的是什么编译器?
最底层烧芯片的纯c环境专用编译器,上层一点点的神马带有兼容c++的那些为了写类阿框架阿什么的就不用吭声了
本回答被网友采纳大侠,谢谢了,现在我A a={ num}的这个num 必须是个 const 所以想请教下,能否 在 num前面cast个什么东西 让它编译通过,c环境,不是c++环境。而且,还有种情况,我删除了typedef const struct{ const int n; }A中的const,然后编译,报的错都一样,说是expression must have a constat value。还望大侠不吝赐教阿。。。拜谢
追答const变量必须在定义是初始化,以后其值不可以改变
你可以把程序贴出来看一下
你说的这句都知道阿,代码就是上面这个,只是把别的成员都删了,名字改了下方便理解,要实装的办法我有,只不过简单改下num=7的定义方式改成宏定义就行,我现在就三不想改这个定义,就想const int num = 7,所以才问有没有什么方法。比如改A的结构体定义
追答typedef const struct{ const int n; }A;改成typedef const struct{ int n; }A;试试
追问在第一个追问里就说过了,没用报的一样的错,原因我猜是typedef const struct 中的const开辟的地址空间都是const的类型,所以在声明时候,再给 const num 就不行了。不过,我也试过把const num 改成 int num 在 typedef const struct{ int n; }A;的情况下运行,居然还是报一样的错,所以一头雾水才上来问问。。。
追答typedef const struct{ const int n; }A;
A a = { const int num = 7 };
如何