Trong C, bạn thường / đôi khi (như một vấn đề về phong cách) sử dụng static
biến phạm vi tệp trong đó bạn sử dụng biến thành viên lớp riêng trong C ++. Khi nhân rộng các chương trình đa luồng, chỉ cần thêm thread_local
vào C11 hoặc phần mở rộng được hỗ trợ dài __thread
cũng phù hợp. Tôi biết bạn có thể làm chính xác như trong C ++ bằng cách đặt mọi thứ vào trong a struct
và tạo một tập hợp các hàm lấy một con trỏ tới đó struct
làm đối số đầu tiên. Một số thư viện làm điều này rộng rãi. Nhưng phong cách cá nhân của tôi là giữ struct
càng nhỏ càng tốt, nếu cần.
Tôi thường đọc hoặc nghe một số người tranh luận về các biến 'toàn cầu' rất tệ. Tôi làm theo lý do của họ và hầu hết các lập luận của họ dường như có liên quan đến extern
các biến toàn cầu trong thuật ngữ C. Những gì họ nói chắc chắn là đúng. Đôi khi tôi sử dụng 1 hoặc 2 extern
biến được khai báo trong toàn bộ chương trình khi nó sẽ đơn giản hóa mọi thứ rất nhiều và khi dễ theo dõi chúng, nhưng đi xa hơn sẽ dễ dàng khiến chương trình không thể đoán trước.
Còn static
các biến thì sao? Họ vẫn có cùng một vấn đề như các biến toàn cầu 'thực'? Có lẽ tôi thậm chí không phải hỏi câu hỏi này và tiếp tục nếu tôi nghĩ những gì tôi đang làm là đúng, nhưng hôm nay tôi thấy một "biến toàn cầu khác là loại bài đăng BAD", và cuối cùng đến đây nghĩ rằng có lẽ đây là một quyền nơi cho loại câu hỏi như vậy. Bạn nghĩ gì?
Câu hỏi này không phải là một bản sao của này vì câu hỏi này hỏi về extern
và static
các đại lượng không địa phương trong khi các câu hỏi khác là về file-phạm vi và khối phạm vi static
biến.