すべてのWin32プログラムが同じ..\PatchLibs検索パスを持つプロジェクトグループがあります。このフォルダーには、パッチが適用されたSystem.Win.Ctrl.pasが含まれています。
{$IFDEF WIN32}
function _malloc(size: size_t): Pointer; cdecl;
begin
if (size > MaxInt) then
begin
Result := Nil
end
else
begin
try
Result := AllocMem(size);
except
Result := Nil;
end;
end;
end;
[このパッチはmidaslib(QC 104337)のエラーを抑制します]
問題:
(小さい)プロジェクトの1つは、「MaxInt」行にW1023(「符号付きタイプと符号なしタイプの比較」)コンパイラ警告を表示します。他のすべてのプロジェクトは警告なしでビルドします。
どのプロジェクトにも、usesステートメントまたはプロジェクトファイルにSystem.Win.Ctrlが含まれていません。
Maxintには2つの型付き定数定義があるかもしれないと考えて、Maxintの前に「正しい」単位名を付けたいと思いましたが、その定義が見つかりません。
使用可能なすべてのc:\ programファイル(x86)\ embarcadero \ rad studio \ 9.0 \ source *。*ファイルを検索しましたが、定義が見つかりませんでした。
System.MaxIntは機能しますが、警告を排除しません。
Cardinal(MaxInt)を型キャストすると警告が削除されますが、それでも「完全に修飾された」ソリューションをお勧めします。
(size_tはULONG_PTRがNativeUIntとして定義されているように定義されています)
Quality Centralの問題102873、69836、および53202を見つけましたが、これらは重複した定義C++.hヘッダーファイルを参照しています
複数の定義についての私の仮定は正しいですか?もしそうなら、単位接頭辞は何であるか/すべきですか?そして最も重要なのは、なぜその1つのプロジェクトビルドに対してのみコンパイラの警告が表示されるのですか?