此代码无法编译:
const int x = 123;
const int y = x;
Run Code Online (Sandbox Code Playgroud)
它抱怨y =行的"初始化元素不是常数".基本上我想要有两个const值,一个是根据另一个定义的.有没有办法在C中执行此操作或者我是否必须使用type-unsafe #defines或者只是将值写为幻数?
分配const类型时,你只能分配文字,即:1,2,'a','b'等,而不是像int x,float y,const int z等变量.变量,尽管你的变量真的是这样的不可变(因为它不能改变)是不可接受的.相反,你必须这样做:
const int x = 123;
const int y = 123;
Run Code Online (Sandbox Code Playgroud)
要么
#define x 123
const int y = 123;
Run Code Online (Sandbox Code Playgroud)
第二个工作,因为编译器将在任何地方剥离x并在编译之前用文字替换它.