Tôi đang viết một thư viện nhỏ trong C++ mà tôi cần để có thể xây dựng trên một vài nền tảng khác nhau, bao gồm iPhone, Windows, Linux, Mac và Symbian S60. Tôi đã viết hầu hết các mã để nó là nền tảng thuyết bất khả tri nhưng có một số phần phải được viết trên cơ sở mỗi nền tảng. Hiện tại tôi thực hiện điều này bằng cách bao gồm một tiêu đề khác tùy thuộc vào nền tảng hiện tại nhưng tôi đang gặp khó khăn trong việc xác định điều này vì tôi không chắc chắn định nghĩa tiền xử lý nào được xác định cho tất cả các nền tảng. Đối với các cửa sổ, tôi thường có thể dựa vào việc xem WIN32 hoặc _WIN32. Đối với Linux, tôi có thể dựa vào việc xem _UNIX_ nhưng tôi ít chắc chắn hơn về các nền tảng khác hoặc các biến thể 64 bit của chúng. Có ai có một danh sách các định nghĩa khác nhau được tìm thấy trên nền tảng hoặc tôi sẽ phải nghỉ mát đến một tập tin cấu hình hoặc tham số gcc?Các định nghĩa tiền xử lý nền tảng C
Trả lời
Tôi có this sourceforge pre-compiler trang trong dấu trang của mình.
Không có tiêu chuẩn C hoặc C++ nào xác định các biểu tượng như vậy, vì vậy bạn sẽ có lòng thương xót của việc triển khai C hoặc C++ cụ thể. Một danh sách các biểu tượng thường được sử dụng sẽ là một điều hữu ích để có, nhưng tiếc là tôi đã không có một.
Tôi không nghĩ rằng tồn tại một danh sách chung của nền tảng xác định đánh giá bởi thực tế là mỗi thư viện đa nền tảng tôi đã thấy có một cấu hình đặc biệt. Nhưng bạn có thể xem xét nhìn vào những người sử dụng bởi các thư viện khá cầm tay như libpng, zlib, vv
Dưới đây là một trong những sử dụng bởi libpng
Các định nghĩa sẽ được hoàn toàn lên đến nhà cung cấp trình biên dịch của bạn. Nếu bạn đang sử dụng cùng một trình biên dịch (nói, gcc) trên tất cả các nền tảng của bạn thì bạn sẽ có một chút thời gian dễ dàng hơn của nó.
Bạn cũng có thể muốn thay vào đó tổ chức dự án của mình sao cho hầu hết các tệp .h không phụ thuộc vào nền tảng. Tách tệp triển khai của bạn (tệp cpp) thành các tệp riêng biệt; một cho những thứ không đặc thù và một cho mỗi nền tảng. Các nền tảng cụ thể có thể bao gồm các tiêu đề 'riêng tư' chỉ có ý nghĩa cho nền tảng đó. Bạn có thể phải thực hiện các chức năng của bộ điều hợp để nhận được một cái gì đó như thế này để làm việc 100% (khi hệ thống libs có các đối số hơi khác nhau), nhưng tôi thấy nó thực sự hữu ích ở cuối và mang lại một nền tảng mới dễ dàng hơn nhiều trong tương lai.
Nếu bạn muốn xem xét thông qua những biểu tượng tiền xử lý mặc định cho một hệ thống nhất định mà bạn có GCC (ví dụ như Mac OS X, iOS, Linux), bạn có thể có được một danh sách đầy đủ từ các dòng lệnh như sau:
echo 'main(){}' | cpp -dM
Tuy nhiên, thường được sử dụng hạn chế, khi giai đoạn biên dịch hoạt động, hầu hết các ký hiệu xác định hệ điều hành và loại CPU chỉ có hệ thống lưu trữ trình biên dịch chứ không phải hệ thống đang được nhắm mục tiêu (ví dụ: khi biên dịch chéo cho iOS). Trên Mac OS X và iOS, đúng cách để xác định các đặc điểm thời gian biên dịch của hệ thống đang được nhắm mục tiêu là
#include <TargetConditionals.h>
này sẽ đón TargetConditionals.h từ Cương lĩnh và SDK hiện đang sử dụng, và sau đó bạn có thể xác định (ví dụ) endianness và một số đặc điểm khác từ một số Macro. (Xem qua TargetConditionals.h để xem loại thông tin nào bạn có thể thu thập.)
Mặc dù việc kiểm tra đầu ra -dM có thể giúp, nhưng nó không thể đảm bảo nhiều thông tin như trang wiki sourceforge trước. – rubenvb
- 1. Phát triển đa nền tảng C++ để tránh các chỉ thị tiền xử lý
- 2. Bảo tồn tiền xử lý các định nghĩa
- 3. Biến tiền xử lý C++
- 4. Định nghĩa tiền xử lý Objective-C, Dynamic C-String để NSString Declaration
- 5. Trình xử lý sự cố đa nền tảng
- 6. C tiền xử lý xác định tên hàm được tạo
- 7. Macro tiền xử lý C nào đã được xác định trong gcc?
- 8. Cách đa nền tảng tối ưu để xử lý các chuỗi Unicode trong C++ là gì?
- 9. C/C++ tiền xử lý Lỗi
- 10. Định dạng mảng cho #define (bộ tiền xử lý C)
- 11. Gỡ lỗi bộ tiền xử lý C++
- 12. Macro tiền xử lý C xác định Macro
- 13. Làm thế nào để bạn sử dụng bộ tiền xử lý để tạo một thư viện đa nền tảng?
- 14. Có thể cho các macro tiền xử lý C chứa các chỉ thị tiền xử lý không?
- 15. Đếm các macro tiền xử lý
- 16. BitVM bitcode đa nền tảng
- 17. Trình tiền xử lý C++ # định nghĩa một từ khóa. Các tiêu chuẩn có phù hợp không?
- 18. Dòng tiền xử lý trước C/C++ này có nghĩa là gì?
- 19. Xử lý một phần tệp bằng bộ tiền xử lý
- 20. Có thể định nghĩa một chỉ thị tiền xử lý khác không?
- 21. Tách đối số trong bộ tiền xử lý C++
- 22. Xác định bên ngoài Macro tiền xử lý trong GLSL
- 23. WSO2 svn update - E205011: Không xảy ra xử lý một hoặc nhiều các định nghĩa externals
- 24. C, đầu ra tiền xử lý Objective-C
- 25. Định nghĩa nền tảng chéo của số nguyên 64 bit trong C++ cho Windows và Linux
- 26. Tài nguyên cho phát triển C/C++ đa nền tảng
- 27. Cơ sở tiền xử lý __COUNTER__ trong Visual C++
- 28. Xử lý đặc trưng cho Windows trong nền tảng độc lập cách
- 29. Toán tử tiền xử lý _Pragma trong Visual C++
- 30. Cách xác định macro tiền xử lý C++ thông qua dòng lệnh với CMake?
Tôi đã chỉnh sửa bạn liên kết để trỏ đến phiên bản wiki mới được cập nhật, mặc dù Google luôn trỏ đến phiên bản cũ . – rubenvb
OK, cảm ơn. –