2010-02-09 31 views
5

thể trùng lặp:
Static variableLàm cách nào để truy cập biến tĩnh từ tệp khác trong C?

Làm thế nào để truy cập vào một biến tĩnh từ một tập tin trong C? Là một biến tĩnh có phạm vi tệp, tôi nghĩ không có cách nào chúng ta có thể truy cập nó bên ngoài tệp. Nhưng tôi vẫn cảm thấy có thể có một số mẹo hay cách để làm như vậy.

+4

Tại sao bạn nghĩ bạn muốn làm điều này? –

+0

@Neil đã nói gì và nó trùng lặp: http://stackoverflow.com/questions/1973162 –

Trả lời

3

Sử dụng từ khóa extern trong tuyên bố của bạn để chỉ định rằng biến đến từ một tệp khác (liên kết bên ngoài). Thả từ khóa tĩnh trong định nghĩa ban đầu của bạn.

Điều liên kết bên ngoài và bên trong được giải thích in this article.

+1

Umm. Gì? Một biến có cả liên kết bên trong và bên ngoài? –

+0

Tôi đã làm rõ phần khai báo so với định nghĩa. – Thorsten79

+0

Bây giờ, câu trả lời của bạn là chính xác về mặt kỹ thuật, nhưng không trả lời câu hỏi. Câu hỏi chính nó không phải là tốt mặc dù. –

1

Bạn chỉ có thể thực hiện điều này gián tiếp, ví dụ: nếu một hàm trong phạm vi của tệp chứa biến tĩnh chuyển cho bạn một con trỏ tới nó.

5

Tôi không nghĩ có cách dễ dàng. Nếu bạn có thể thay đổi tệp bằng biến tĩnh, bạn có thể làm điều gì đó như:

static int hiddenVar; // The static var you want to get at 

// A new function you write 
int * getHiddenVar() { 
    return &hiddenVar; 
} 

Nhưng dĩ nhiên nếu bạn có thể thay đổi tệp, bạn chỉ cần thả từ khóa tĩnh.

Ngoài ra, tôi nghi ngờ điều này sẽ giúp, nhưng tôi đã phải làm một cái gì đó như thế này khi viết một mô-đun hạt nhân trong FreeBSD. Tôi đã sử dụng một mẹo mà tôi gọi là các hàm liên kết của hạt nhân để tìm địa chỉ của một hàm tĩnh. Tôi nghi ngờ bạn có thể làm điều này trong một chương trình C bình thường mặc dù.

Các vấn đề liên quan