在 C 中声明匿名结构的局部常量变量

use*_*818 3 c struct

我有以下代码:

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 的问题是否有解决方案?

Bil*_*nch 6

你只是忘记了=标志。

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)