Trong C, bạn thường / đôi khi (như một vấn đề về phong cách) sử dụng staticbiế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_localvào C11 hoặc phần mở rộng được hỗ trợ dài __threadcũ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 structvà tạo một tập hợp các hàm lấy một con trỏ tới đó structlà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ữ structcà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 externcá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 externbiế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 staticcá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ề externvà staticcá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 staticbiến.