Có cơ chế nào trong D (D2) để buộc mã được biên dịch trong khi xây dựng bản phát hành không?Biên dịch mã để xây dựng bản phát hành trong D
Trong C, bạn có thể có một cái gì đó giống như
#ifndef NDEBUG
/*Something that will only run in a debug build*/
#endif
Tôi biết rằng D có
debug(mymodule) {
//Do something
}
Nhưng điều này đòi hỏi người sử dụng để vượt qua -debug cho mỗi mô-đun để kích hoạt nó.
Tôi đang tìm cơ chế toàn cầu sẽ luôn chạy mã trong một bản dựng bình thường nhưng biên dịch nó khi bạn chuyển cờ -release. Tôi biết một số trình cài sẵn có khả năng này (ví dụ: khẳng định), nhưng có cách nào để mã người dùng thực hiện điều đó không?
Tôi nghĩ rằng một phần vấn đề của bạn là 'debug' và' -release' không liên quan gì đến nhau trong D. '-release' ngụ ý rằng bạn đang biên dịch phiên bản phát hành và nó vô hiệu hóa các kiểm tra khác nhau (chẳng hạn như xác nhận). '-debug' cho phép các câu lệnh debug. Như vậy, bạn có thể lập luận rằng không thực sự là một "chế độ gỡ lỗi" trong D. Bạn có chế độ phát hành và chế độ không phát hành với khả năng bật các câu lệnh gỡ lỗi trong cả hai chế độ. Tôi không nghĩ rằng '-release' được cho là thực sự thay đổi ngữ nghĩa của mã của bạn như' -debug', vì vậy đó là lý do tại sao bạn không thể làm những gì bạn đang cố gắng làm. –
Tôi không tìm cách thay đổi ngữ nghĩa cho bản phát hành bản phát hành. Tôi chỉ đang tìm cách tốt nhất để thêm kiểm tra bổ sung, bản in, v.v. trong một bản phát hành không phát hành sẽ luôn được bật trong khi phát triển. Tôi thấy nó như một cái gì đó để cung cấp cho một nhà phát triển để theo dõi các vấn đề nhanh hơn. Các kiểm tra và cảnh báo bổ sung có thể cung cấp cho họ gợi ý về mô-đun nào họ nên bật -debug. – JRM
Tôi đã trả lời, nhưng bằng cách nào đó, tôi cảm thấy xấu về nó. Tôi khuyên bạn chỉ nên sử dụng -debug khi devving và 'debug {// ...}'. Tốt hơn để làm cho nó dễ dàng để làm cho những sai lầm khi devving, hơn khi phát hành, imho. – 0scar