Có nhiều cách sử dụng __attribute__
nhưng chúng rất cụ thể đối với trình biên dịch và mã được viết bằng cách sử dụng các số này là không phải là thực sự di động. Mặt khác, ngôn ngữ C không cung cấp bất kỳ mô-đun/thư viện khởi động nào.
Trong C, logic main()
là chức năng đầu tiên được gọi bởi hệ điều hành. Nhưng trước khi gọi main()
, hệ điều hành gọi một hàm khác được gọi là start-up
mô-đun để thiết lập các biến môi trường khác nhau, khởi tạo (không khởi tạo) biến tĩnh, xây dựng khung ngăn xếp (kích hoạt bản ghi) và khởi tạo ngăn xếp ngăn xếp để bắt đầu vùng ngăn xếp và các nhiệm vụ phải được thực hiện trước khi gọi main()
.
Giả sử bạn đang viết mã cho các hệ thống nhúng nơi không có hệ điều hành nào tối thiểu để thực hiện công việc được đề cập ở trên, thì bạn nên khám phá các tùy chọn này phụ thuộc vào trình biên dịch. Ngoài các trình biên dịch GCC, Turbo-C và Microsoft C cung cấp các tiện ích để thêm mã vào một máy phần cứng cụ thể (ví dụ: 8086 máy).
IOW, các mô-đun khởi động không dành cho các lập trình viên.
Nguồn
2012-01-03 14:44:15
http://stackoverflow.com/questions/949890/how-can-i-perform-pre-main-initialization-in-cc-with-avr-gcc – stacker
@stacker - Câu hỏi mà bạn đề cập cụ thể là Môi trường Arduino. Dù sao, câu trả lời có thể hữu ích. – mouviciel