我有以下代码:
void fn(){
struct{
int a;
int b;
} s1, s2;
s1.a = 1;
s1.b = 2;
s2.a = 1 << s1.a;
s2.b = 1 << s2.b;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过以某种方式使变量保持不变,但是在尝试以这种方式执行此操作时出现了一堆编译器错误:
void fn(){
const struct{
int a;
int b;
} s1{.a = 1, .b = 2}, s2{.a = 1 << s1.a, .b = 1 << s1.b};
}
Run Code Online (Sandbox Code Playgroud)
main.c:7:10: error: expected ';' at end of declaration
} s1{.a = 1, .b = 2}, s2{.a = 1 << s1.a, .b = 1 << s1.b};
^
;
1 error generated.
Run Code Online (Sandbox Code Playgroud)
题:
使用通过 s1 的字段定义的 s2 的字段声明同一匿名结构的两个常量局部变量 s1 和 s2 的问题是否有解决方案?
你只是忘记了=标志。
void fn(){
const struct {
int a;
int b;
} s1 = {
.a = 1,
.b = 2,
}, s2 = {
.a = 1 << s1.a,
.b = 1 << s1.b,
};
}
Run Code Online (Sandbox Code Playgroud)