Có một điểm chuỗi giữa các biểu thức khởi tạo thành viên cấu trúc không? Ví dụ:Có một điểm chuỗi giữa các khởi tạo thành viên cấu trúc không?
Ví dụ, được xác định rõ rằng mã dưới đây sẽ luôn in "a, b"?
#include <stdio.h>
typedef struct {
char *bytes;
int position;
int length;
} Stream;
typedef struct {
char a;
char b;
} Pair;
char streamgetc(Stream *stream) {
return (stream->position < stream->length) ? stream->bytes[stream->position++] : 0;
}
int main(void) {
Stream stream = {.bytes = "abc", .position = 0, .length = 3};
Pair pair = {.a = streamgetc(&stream), .b = streamgetc(&stream)};
printf("%c, %c\n", pair.a, pair.b);
return 0;
}
Tôi thích (và bỏ phiếu cho) việc thêm chú thích 131, nhưng tôi đã đi với câu trả lời cũ hơn vì tôi nghĩ cả hai đều đã hoàn thành. –
Điều đó có nghĩa là việc đánh giá các biểu thức liên kết với các phần tử khác nhau được đảm bảo không trùng lặp, nhưng có thể đánh giá bất kỳ số biểu thức nào trong khoảng thời gian được đánh giá hay không. – supercat