30/09/2018, 16:59
Lỗi "declaration may not appear after executable statement in block" trong C?
Em muốn khai báo 1 mảng ngay giữa chương trình, vì chưa biết giá trị mảng đó là bao nhiêu nhưng lại bị lỗi như vầy:
uint8_t a;
a = 23; // a se duoc tinh 1 gia tri nao do
uint8_t b[a]; // khai báo khúc này bị lỗi
// error: declaration may not appear after executable statement in block
Thank các bạn nhiều.
Bài liên quan
Do compiler bạn đang dùng hỗ trợ chuẩn C89. Trong chuẩn C89 không cho phép khai báo sau khi đã có một câu lệnh được gọi.
Vì thế phải mang
uint8_t b[a];
lên trước chỗ gána = 23
. Có điều không thể làm vậy được, thế nên ta phải dùng con trỏ và cấp phát độngmalloc
hoặccalloc
.Hoặc sử dụng compiler C99.
Em khai báo vậy thì hết lỗi, nhưng mà sai ở chỗ nào em chưa hiểu, anh Đạt chỉ giúp em ạ
Em khai báo buffer có 123 giá trị như vậy có đúng chưa anh nhỉ?
Thank anh nhiều.
Đọc kĩ lại phần giải thích ở trên của @ltd đi, ko phải lướt lướt.
Code bên dưới là ok rồi.