gpt4 book ai didi

delphi - 为什么不使用常量时没有警告或提示?

转载 作者:行者123 更新时间:2023-12-03 14:47:07 27 4
gpt4 key购买 nike

当我试图向另一个人展示一些代码时,我微妙地发现除了不使用声明的变量时会有编译器提示消息之外,当不使用声明的常量时没有任何提示或消息。以下代码是一个示例:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils,
Math;

const
intM: Integer = 1000;

var
valorDouble, notusedvar: Double;

begin
try
valorDouble := 0.001;
Writeln('--- Codigo atual --');
Writeln('Double -> ', Trunc(valorDouble * 1000));
Writeln('--- Correcao?? --');
Writeln('Trunc(1.0000001) -> ', Trunc(1.0000001));
Writeln('Trunc(0.001 * 1000.0) -> ', Trunc(0.001 * 1000.0));
Writeln('Trunc(0.0010 * 1000.0) -> ', Trunc(0.0010 * 1000.0));
Writeln('Trunc(0.00100 * 1000.0) -> ', Trunc(0.00100 * 1000.0));

Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

为什么没有关于未使用常量的提示?对于这种差异有任何合乎逻辑的解释吗?

最佳答案

让我们直接跳到一个例子。假设您正在编写一个带有 1 个导出函数的 DLL。这些函数的参数之一是一个整数...

procedure DoSomething(const Value: Integer); stdcall;

现在假设您已经定义了多个常量来表示该函数可能识别的所有可能的整数值...

const
CON_ONE = 1;
CON_TWO = 2;
CON_THREE = 3;
//Maybe hundreds

现在假设当您实现此函数时,您只需要第一个 CON_ONE 而不需要其他两个。您真的想要每一项都得到提示吗?

更现实的例子是 Delphi 附带的 HKEY_LOCAL_MACHINEHKEY_CURRENT_USER 等(与 Windows API 调用相关)。只需查看 Windows.pas 中的所有常量即可。想象一下,如果所有这些可能的常量都会引发编译器提示。

本质上,当您获得未使用变量的编译器提示时,它通常意味着编码错误(或者只是您忘记删除的内容),而未使用常量通常意味着未实现的功能。

关于delphi - 为什么不使用常量时没有警告或提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23115124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com