Ok, tôi đang tìm cách xác định tập hợp các địa chỉ bộ nhớ dưới dạng hằng số trong tệp .h được sử dụng bởi một nhóm tệp .c (chúng tôi đang ở C, không phải C++). Tôi muốn có thể nhìn thấy tên của biến thay vì chỉ nhìn thấy địa chỉ hex trong trình gỡ rối ... vì vậy tôi muốn chuyển đổi #defines tôi hiện có thành các hằng số có phạm vi toàn cục. Vấn đề là, nếu tôi định nghĩa chúng như thế này:hằng số toàn cầu mà không sử dụng #define
const short int SOME_ADDRESS = 0x0010
sau đó tôi nhận được lỗi "nhiều khai báo" vì tôi có nhiều tệp .c sử dụng cùng .h. Tôi muốn sử dụng một enum, nhưng điều đó sẽ không làm việc vì nó mặc định để loại số nguyên (đó là 16 bit trên hệ thống của tôi ... và tôi cần phải có quyền kiểm soát tốt hơn các loại).
Tôi nghĩ về việc đặt tất cả các địa chỉ trong cấu trúc ... nhưng tôi không có cách nào (mà tôi biết) thiết lập giá trị mặc định của cá thể của cấu trúc trong tệp tiêu đề (tôi không muốn giả sử rằng một tệp .c cụ thể sử dụng cấu trúc đầu tiên và điền vào nó ở nơi khác .. Tôi thực sự muốn có các hằng số được định nghĩa trong tệp .h)
Nó dường như rất đơn giản khi tôi bắt đầu, nhưng tôi không nhìn thấy một cách tốt để xác định một hằng số ngắn có sẵn trên toàn cầu trong một tập tin tiêu đề ... bất cứ ai biết một cách để làm điều này?
cảm ơn!
nếu tôi làm điều đó, tôi sẽ không phải biết rằng tệp .c cụ thể đó được gọi trước? hoặc nếu chúng được định nghĩa trên toàn cầu trong tệp .c đó, thì định nghĩa sẽ được thực hiện trước khi bất kỳ hàm nào được gọi? –
Không, không có gì để được gọi để khởi tạo các hằng số và định nghĩa sẽ có mặt trước khi bất cứ điều gì cố gắng sử dụng chúng. Chỉ cần đảm bảo rằng tệp '.o' (hoặc' .obj') của tệp '.c' trong đó các hằng số được xác định được liên kết vào nhị phân cuối cùng. – hmjd
nó hoạt động - cảm ơn !!! –