#c #struct
#c #структура
Вопрос:
У меня есть следующий код:
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;
}
я пытался каким-то образом сделать переменные постоянными, но при попытке сделать это таким образом я получаю кучу ошибок компилятора:
void fn(){
const struct{
int a;
int b;
} s1{.a = 1, .b = 2}, s2{.a = 1 << s1.a, .b = 1 << s1.b};
}
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.
Вопрос:
существует ли решение проблемы объявления двух постоянных локальных переменных s1 и s2 одной и той же анонимной структуры с полями s2, определенными через поля s1?
Комментарии:
1. Это похоже на синтаксис C . В C вам нужны
=
промежуточныеs1
и открывающие фигурные скобки. То же самое дляs2
.2. «Куча ошибок компилятора» не является допустимой ошибкой, пожалуйста, скопируйте и вставьте фактические сообщения об ошибках, которые вы получаете
Ответ №1:
Вы просто забыли =
знаки.
void fn(){
const struct {
int a;
int b;
} s1 = {
.a = 1,
.b = 2,
}, s2 = {
.a = 1 << s1.a,
.b = 1 << s1.b,
};
}
Комментарии:
1. Иногда самые простые вещи делают ваш день или портят его.