同じプロジェクト ファイルからコンパイルされた Windows および Linux 環境で最終的に実行されるプログラムを作成しているので、オペレーティング システムのディレクティブがどれだけうまく機能するかをテストして確認したいと思いました。ということで、サンプルコードを書いてみました。コードが予期せず実行されるように見えるか、それとも単なる私の想像です。
コードは次のとおりです。
method MainForm.ControlBtn_Click(sender: System.Object; e: System.EventArgs);
begin
{$IFDEF linux}
MessageBox.Show('This is Linux. Horay!!!', 'mypro',MessageBoxButtons.yesno);
{$ENDIF}
{$IFDEF WIN32}
MessageBox.Show('This is Win32. Horay!!!', 'mypro',MessageBoxButtons.yesno);
{$ENDIF}
{$IFDEF CLR}
MessageBox.Show('This is .NET Framework. Horay!!!', 'mypro',MessageBoxButtons.yesno);
{$ENDIF}
end;
ここで、Windows でこのメソッドを実行すると、「This is .NET Framework. ホライ!!!」Windowsで実行されていることを期待していました。Linux 上で Mono を実行すると、同じメッセージが表示されたメッセージ ボックスがポップアップ表示されました。「This is Linux. Horay!!!」という Linux メッセージが表示されることを期待していました。このコードが正しく機能している場合、Linux、Mac、または Windows でのみサポートされているさまざまなメソッドを実行する必要がある場合に、プログラムが実行されているプラットフォームを確認するにはどうすればよいでしょうか。