Các chỉ dẫn biên dịch

Một phần của tài liệu Tự học CSharp chương 2 docx (Trang 39 - 40)

Đối với các ví dụ minh họa trong các phần trước, khi biên dịch thì toàn bộ chương trình sẽ được biên dịch. Tuy nhiên, có yêu cầu thực tế là chúng ta chỉ muốn một phần trong

chương trình được biên dịch độc lập, ví dụ như khi debug chương trình hoặc xây dựng các ứng dụng...

Trước khi một mã nguồn được biên dịch, một chương trình khác được gọi là chương trình tiền xử lý sẽ thực hiện trước và chuẩn bị các đoạn mã nguồn để biên dịch. Chương trình tiền xử lý này sẽ tìm trong mã nguồn các kí hiệu chỉ dẫn biên dịch đặc biệt, tất cả các chỉ dẫn biên dịch này đều được bắt đầu với dấu rào (#). Các chỉ dẫn cho phép chúng ta định nghĩa các định danh và kiểm tra các sự tồn tại của các định danh đó.

Định nghĩa định danh

Câu lệnh tiền xử lý sau:

#define DEBUG

Lệnh trên định nghĩa một định danh tiền xử lý có tên là DEBUG. Mặc dù những chỉ thị tiền xử lý khác có thể được đặt bất cứ ở đâu trong chương trình, nhưng với chỉ thị định nghĩa định danh thì phải đặt trước tất cả các lệnh khác, bao gồm cả câu lệnh using.

Để kiểm tra một định danh đã được định nghĩa thì ta dùng cú pháp #if <định danh>. Do đó ta có thể viết như sau:

#define DEBUG

//...Các đoạn mã nguồn bình thường, không bị tác động bởi trình tiền xử lý ...

#if DEBUG

// Các đoạn mã nguồn trong khối if debug được biên dịch #else

// Các đoạn mã nguồn không định nghĩa debug và không được biên dịch #endif

//...Các đoạn mã nguồn bình thường, không bị tác động bởi trình tiền xử lý

Khi chương trình tiền xử lý thực hiện, chúng sẽ tìm thấy câu lệnh #define DEBUG và lưu lại định danh DEBUG này. Tiếp theo trình tiền xử lý này sẽ bỏ qua tất cả các đoạn mã bình thường khác của C# và tìm các khối #if, #else, và #endif.

Câu lệnh #if sẽ kiểm tra định danh DEBUG, do định danh này đã được định nghĩa, nên đoạn mã nguồn giữa khối #if đến #else sẽ được biên dịch vào chương trình. Còn đoạn mã nguồn giữa #else và #endif sẽ không được biên dịch. Tức là đoạn mã nguồn này sẽ không được thực hiện hay xuất hiện bên trong mã hợp ngữ của chương trình.

Trường hợp câu lệnh #if sai tức là không có định nghĩa một định danh DEBUG trong chương trình, khi đó đoạn mã nguồn ở giữa khối #if và #else sẽ không được đưa vào chương trình để biên dịch mà ngược lại đoạn mã nguồn ở giữa khối #else và #endif sẽ được biên dịch.

Lưu ý: Tất cả các đoạn mã nguồn bên ngoài #if và #endif thì không bị tác động bởi trình tiền xử lý và tất cả các mã này đều được đưa vào để biên dịch.

Một phần của tài liệu Tự học CSharp chương 2 docx (Trang 39 - 40)

Tải bản đầy đủ (PDF)

(40 trang)