Tiêu đề nào xác định macro chỉ định kiến ​​trúc máy?


7

Phiên bản ngắn hơn của câu hỏi:

Mà C tiêu đề chứa các macro tương ứng với kiến trúc máy của hệ thống (ví dụ __x86_64__, __ia64__, __mips__?)

Phiên bản dài hơn của câu hỏi:

Tôi muốn chạy các công cụ giám sát ganglia trên hệ thống dựa trên Tilera chạy Linux.

Ganglia hiện không có hỗ trợ cho Tilera. Để làm việc này, tôi đã sửa đổi một hàm C có tên là machine_type_func trả về kiến ​​trúc máy. Phần thân của hàm này được xác định tại thời gian biên dịch, nó trông như thế này:

g_val_t
machine_type_func ( void )
{
   g_val_t val;

#ifdef __i386__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86");
#endif
#ifdef __x86_64__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");
#endif
...
   return val;
}

Tôi cần thêm dòng thích hợp cho Tilera, nhưng tôi không biết tên của macro chỉ định hệ thống dựa trên Tilera. Tôi đoán macro này được định nghĩa trong một trong các tiêu đề Linux tiêu chuẩn, nhưng tôi không biết nên tìm cái nào trong đó.

Câu trả lời:


8

Không có tệp tiêu đề nào định nghĩa nó - các macro đó được trình biên dịch xác định trước. Để tìm ra danh sách đầy đủ các macro được xác định trước, hãy làm điều này:

echo | gcc -E -dM -

Sau đó xem qua các kết quả cho các macro có khả năng.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.