История изменений
Исправление fsb4000, (текущая версия) :
Кстати, про устаревание и прочее. После знакомства с Rust и F#, я потом попробовал сделать в С immutable тип, и обнаружил для себя что C их уже поддерживает. Нужно лишь дописывать const.
typedef struct
{
int const x;
int const y;
} Point;
int main()
{
Point p = {.x = 2, .y=3};
p.x = 5; // ошибка компиляции
//но вот так можно
p = Point {.x=5, .y=3};
// я специально не поставил const у p, чтобы можно было делать как в Rust, с повторным let
// let p = Point {x: 2, y: 3};
// p.x =5 ; // ошибка компиляции
// let p = Point {x: 5, y: 3}; // ok
}
Исправление fsb4000, :
Кстати, про устаревание и прочее. После знакомства с Rust и F#, я потом попробовал сделать в С immutable тип, и обнаружил для себя что C их уже поддерживает. Нужно лишь дописывать const.
typedef struct
{
int const x;
int const y;
} Point;
int main()
{
Point p = {.x = 2, .y=3};
p.x = 5; // ошибка компиляции
//но вот так можно
p = Point {.x=5, .y=3};
// я специально не поставил const, чтобы можно было делать как в Rust, с повторным let
// let p = Point {x: 2, y: 3};
// p.x =5 ; // ошибка компиляции
// let p = Point {x: 5, y: 3}; // ok
}
Исправление fsb4000, :
Кстати, про устаревание и прочее. После знакомства с Rust и F#, я потом попробовал сделать в С immutable тип, и обнаружил для себя что C их уже поддерживает. Нужно лишь дописывать const.
typedef struct
{
int const x;
int const y;
} Point;
int main()
{
Point p = {.x = 2, .y=3};
p.x = 5; // ошибка компиляции
//но вот так можно
p = Point {.x=5, .y=3};
// я специально оставил это чтобы можно было делать как в Rust, с повторным let
// let p = Point {x: 2, y: 3};
// p.x =5 ; // ошибка компиляции
// let p = Point {x: 5, y: 3}; // ok
}
Исходная версия fsb4000, :
Кстати, про устаревание и прочее. После знакомства с Rust и F#, я потом попробовал сделать в С immutable тип, и обнаружил для себя что C их уже поддерживает. Нужно лишь дописывать const.
typedef struct
{
int const x;
int const y;
} Point;
int main()
{
Point p = {.x = 2, .y=3};
p.x = 5; // ошибка компиляции
//но вот так можно
p = {.x=5, .y=3};
// я специально оставил это чтобы можно было делать как в Rust, с повторным let
// let p = Point {x: 2, y: 3};
// p.x =5 ; // ошибка компиляции
// let p = Point {x: 5, y: 3}; // ok
}