Macos 如何正确处理';[dcc32警告]W1002符号x特定于平台';?

Macos 如何正确处理';[dcc32警告]W1002符号x特定于平台';?,macos,delphi,multiplatform,Macos,Delphi,Multiplatform,我正在准备移植到Mac的代码,现在我必须处理“特定于平台”的警告(直到现在我才隐藏) 因此,我有几个地方(很少)看到警告。为了使我的代码具有多平台性,我做了如下操作: Procedure SomeName; {$IFDEF msWindows} begin SomeWinPlatformSpecificCode; <---------- warning here {$ELSE} begin MacAlternativeCode; end; {$ENDIF} Procedu

我正在准备移植到Mac的代码,现在我必须处理“特定于平台”的警告(直到现在我才隐藏)

因此,我有几个地方(很少)看到警告。为了使我的代码具有多平台性,我做了如下操作:

Procedure SomeName;
{$IFDEF msWindows}
begin
 SomeWinPlatformSpecificCode;       <---------- warning here
{$ELSE}
begin
 MacAlternativeCode;
end;
{$ENDIF}
Procedure-SomeName;
{$IFDEF msWindows}
开始

一些WinPlatformSpecificCode;如果没有出路,你可以把它包装成
{$WARN SYMBOL\u PLATFORM OFF}你的代码{$WARN SYMBOL\u PLATFORM ON}
。我正在考虑这个问题,但似乎有点。。。我不知道怎么称呼它。。。这不是一个优雅的解决方案。可能是因为我手动隐藏了警告。我从来没有这样做过(除了平台警告)。我知道在这种情况下这样做是可以的,但仍然。。。我想编译器会看到代码在{$IFDEF MSWINDOWS}包中,并且会自动知道关闭。编译器没有那么聪明。
platform
指令只告诉编译器某个符号是特定于平台的,而不是特定于哪个平台。所以你必须告诉编译器你想要什么。在这种情况下,如果所有特定于平台的代码都已充分定义,我将在单元顶部或至少在
实现部分的顶部放置一个
{$WARN SYMBOL\u platform OFF}
。但肯定不是在每个IFDEF中。我认为在单元顶部关闭编译器不是一个好主意,因为当您添加新的平台绑定代码时。。。好。。。编译器将关闭。为什么您认为在每个IFDEF中推迟PLATFORM OFF指令不是一个好主意?警告只是一个提示,提醒您不要期望此代码在所有平台上都工作。用
SYMBOL\u PLATFORM OFF
包装代码只是告诉编译器:“我看到并理解了警告,我做了一切来处理它”。如果你包装并没有处理这个问题,你就对编译器撒谎,最后你对自己撒谎。事情就是这样