2016-09-23 24 views
7

Tôi có đoạn mã này:

INTERFACE 

{$WARN SYMBOL_PLATFORM OFF} 
USES 
    Winapi.Windows, etc, {$IFDEF MSWINDOWS}Vcl.FileCtrl, {$ENDIF} System.IniFiles; 
{$WARN SYMBOL_PLATFORM ON} 

Trình biên dịch cho thấy:

[Cảnh báo dcc32] W1005 Unit 'Vcl.FileCtrl' là cụ thể cho nền tảng

mặc dù {$ WARN SYMBOL_PLATFORM OFF} đã có.
Tại sao?

Trả lời

10

Bạn đang sử dụng sai chỉ thị. SYMBOL_PLATFORM kiểm soát cảnh báo cho ký hiệu nền tảng được đánh dấu cụ thể. Cảnh báo của bạn liên quan đến một đơn vị được đánh dấu cụ thể.

Kiểm soát các cảnh báo này với UNIT_PLATFORM.

Toàn bộ đơn vị được gắn thẻ (sử dụng chỉ dẫn gợi ý nền tảng) làm đơn vị chứa tài liệu có thể không có sẵn trên tất cả các nền tảng. Nếu bạn đang viết các ứng dụng đa thiết bị, thiết bị có thể gây ra sự cố. Ví dụ: một đơn vị sử dụng các đối tượng được xác định trong OleAuto có thể được gắn thẻ bằng chỉ thị PLATFORM.

Chỉ thị biên dịch ON/OFF UNIT_PLATFORM $ ONN_PLATFORM bật hoặc tắt tất cả cảnh báo về chỉ thị nền tảng trong các đơn vị nơi chỉ thị nền tảng được chỉ định.


Có một cách rất dễ dàng để bạn có thể làm việc này ra cho chính mình. Hãy xem hai chủ đề tài liệu tôi đã liên kết ở trên. danh hiệu của họ là:

  • W1002 Symbol '% s' là cụ thể cho một nền tảng (Delphi)
  • W1005 Unit '% s' là cụ thể cho một nền tảng (Delphi)

Cảnh báo trình biên dịch bạn đã nhận được tên cảnh báo là W1005. Đây là tất cả những gì bạn cần biết để xác định chỉ thị nào sẽ sử dụng để kiểm soát nó. Nếu bạn gặp khó khăn trong việc tìm kiếm chúng, hãy tìm kiếm tên cảnh báo, W1005 trong trường hợp này. Hoặc tham khảo documentation that lists them all.

Các vấn đề liên quan