Lập trình siêu lập trình tiền xử lý. Tức là, sử dụng tệp được bao gồm như một loại hàm thời gian biên dịch thực hiện một số nhiệm vụ. Các đối số cho hàm là các macro. Ví dụ, các tập tin bạn liên kết có một phần trông như thế này:
// define INCLUDE_STACK to include "ofstack.h"
#ifdef INCLUDE_STACK
#include "dcmtk/ofstd/ofstack.h"
#endif
Vì vậy, nếu tôi muốn bao gồm "ofstack.h"
, tôi sẽ làm như vậy như thế này:
#define INCLUDE_STACK
#include "ofstdinc.h"
#undef INCLUDE_STACK
Bây giờ, hãy tưởng tượng sau đó xuống dòng, ai đó muốn sử dụng phần đặc biệt này của tiêu đề:
// define INCLUDE_STRING to include "ofstring.h"
#ifdef INCLUDE_STRING
#include "dcmtk/ofstd/ofstring.h"
#endif
Vì vậy, họ làm như sau:
#define INCLUDE_STRING
#include "ofstdinc.h"
#undef INCLUDE_STRING
Nếu "ofstdinc.h"
đã bao gồm bảo vệ, nó sẽ không được bao gồm.
Nguồn
2015-05-09 12:40:23
Những người được cố gắng sử dụng một hack (bao gồm nhiều) để giải quyết một vấn đề. Trong mã mới của riêng bạn, tốt nhất là nên thử và tránh loại giải pháp đó và luôn luôn sử dụng bao gồm cả bảo vệ. – pmg