Tôi đã đọc các văn bản trên tường, Tránh Globals. Điều này dẫn đến câu hỏi rõ ràng, cách tốt nhất để làm điều đó?Làm thế nào để không sử dụng các biến toàn cầu trong c
Tôi rõ ràng muốn làm điều đó với một dự án hiện tại. Mục tiêu là để cho một máy tính ở xa gửi "tổ hợp phím" tới các ứng dụng đã có trình đọc stdin. Ý tưởng là để cho các mã hiện có phát hiện không có phím tắt đang chờ xử lý, sau đó kiểm tra xem có một "phím tắt udp" và, nếu có, hãy chèn nó vào để nó có vẻ là đầu vào bàn phím. Tối thiểu xâm lấn và sẽ không đòi hỏi những người yêu thích trang trí của người khác.
Vì vậy, tôi rải sỏi lên một trình đọc socket UDP nhỏ có sử dụng một hàm setup()
để mở và gắn vào cổng, sau đó một hàm service()
trong một vòng lặp mà sử dụng một nonblocking select()
một lần, không có vòng lặp, chỉ cần kiểm tra nếu có bất cứ điều gì để đọc ngay bây giờ. Nếu vậy, đọc dữ liệu từ các ổ cắm và làm điều gì đó với nó, nếu không trả về một 0.
// pseudo c
char c;
setup();
while (1)
{
c = check_for_keyboard_entry();
if (c == 0)
c = service();
handle_keypress(c);
do_a_bunch_of_other_stuff();
}
Các cách rõ ràng để làm điều này là với một vài globals chuyển cảng, thời gian chờ, sockaddr của, vv giữa hai chức năng. Nhưng, các ngươi phải avid globals, phải không?
Vì vậy, cách ưa thích để chuyển sáu hoặc tám vars giữa các chức năng là gì?
Nếu tôi sử dụng các bình tĩnh trong setup()
, chúng có thể truy cập được theo thông lệ service()
không?
Tôi giả sử một cấu trúc được lấy nét và được truyền xung quanh sẽ hoạt động. Tôi cần phải có một cleanup()
để đóng ổ cắm và giải phóng bộ nhớ.
HÃY NHỚ, ĐÂY LÀ CÂU HỎI C. KHÔNG C++!
_''Tôi giả sử một cấu trúc được tạo thành đường viền và được truyền xung quanh sẽ hoạt động '' '- Bạn đã hiểu! –
+1 cho tốc độ thô! Bất kỳ cách tiếp cận nào khác? –
Vui lòng sửa \ 0 thành 0 hoặc '\ 0' –