Có cách nào (ví dụ: các hằng số được xác định) để truy cập các cờ biên dịch mà trình biên dịch được chạy bên trong mã đang được biên dịch hay không.g ++: Có cách nào để truy cập cờ biên dịch bên trong mã đang được biên dịch không?
Ví dụ, tôi muốn một chương trình viết cờ mà nó được biên soạn.
int main(){
std::cout << COMPILE_FLAGS << std::endl;
}
Có các hằng số như vậy cho gcc/g ++ không? Hoặc thậm chí tốt hơn: Có hằng số được xác định cả trong gcc và clang?
Tôi đặc biệt quan tâm đến việc kiểm tra cấp độ tối ưu hóa và giá trị của cờ -march
. Vì vậy, nếu không có hằng số hiển thị tất cả các cờ, thì có ít nhất các cờ hiển thị các giá trị này không?
Nếu không có gì khác, bạn sẽ có thể kết hợp với nhau bằng cách sử dụng một makefile đồng thời đặt cờ tối ưu hóa và ghi một hằng số vào tệp tiêu đề. – Degustaf
Tôi sẽ cố gắng tìm kiếm trong thông tin gỡ lỗi được lưu trữ với mã, NẾU nó được biên dịch với thông tin đó. Nói chung tôi sẽ nói không có cách nào, bởi vì chúng tôi biên dịch mã máy, và điều này sẽ là thông tin hoàn toàn không cần thiết trong thời gian chạy trong hầu hết các trường hợp. Tôi có nghĩa là hầu hết các lá cờ ảnh hưởng đến những máy-hướng dẫn được lựa chọn và tối ưu hóa có thể được thực hiện, vì vậy bạn có thể suy ra một số cờ từ bản thân mã máy. – midor