“hard coded” 是什么意思?

51
我的任务要求我访问一个名为test.txt的文档,所以文件名必须硬编码到我的C驱动器中。我不知道什么是硬编码。可以有人帮我吗?
4个回答

85

"硬编码"是指将某些内容直接写入源代码中。如果您不使用硬编码,则可以提示用户输入数据,或允许用户在命令行上输入数据等等。

因此,如果要将文件位置硬编码为位于C:驱动器上,则只需在源代码中将文件的路径名连在一起即可。

这里有一个例子。

int main()
{
    const char *filename = "C:\\myfile.txt";

    printf("Filename is: %s\n", filename);
}

文件名以“C:\myfile.txt”的方式进行“硬编码”。

反斜杠被加倍的原因是因为在C字符串中反斜杠是特殊字符。


7
顺便说一下,许多文件系统也接受斜杠'/'作为目录分隔符。主要的优点是你不会遇到使用一个反斜杠时可能被视为转义字符的问题。例如:"C:\temp"与"C:/temp";其中 \t 是制表符。 - Thomas Matthews
8
Windows系统支持使用“/”作为路径分隔符,但其他广泛使用的文件系统不支持使用“\”作为路径分隔符。因此,我总是使用“/”作为我的路径分隔符。 - David Stone

17

"硬编码"指的是您希望嵌入到程序或任何项目中的内容,无法直接更改。

例如,如果您正在使用数据库服务器,并将其硬编码连接到您的项目中,则用户无法更改该连接。


6

编码有两种类型。

(1) hard-coding
(2) soft-coding

硬编码。在编写源代码时分配程序值,并制作可执行程序文件。现在,更改程序源代码的值是非常困难的过程。就像在区块链技术中,创世区块是无法更改或修改的硬编码。

软编码:将外部来源的值插入计算机程序的过程。例如通过键盘、命令行界面插入值。软编码被认为是良好的编程实践,因为开发人员可以轻松地修改程序。


6

场景

在一所大学里有许多学生正在修读不同的课程,考试后我们需要准备成绩单来显示成绩。我可以用两种方式计算成绩等级。

1. 我可以编写以下代码

    if(totalMark <= 100 && totalMark > 90) { grade = "A+"; }
    else if(totalMark <= 90 && totalMark > 80) { grade = "A"; }
    else if(totalMark <= 80 && totalMark > 70) { grade = "B"; }
    else if(totalMark <= 70 && totalMark > 60) { grade = "C"; }

2.您可以要求用户在某处输入等级定义,并保存该数据

类似于存储到数据库表中 enter image description here

在第一种情况下,等级对所有课程都是通用的,如果规则更改,则需要更改代码。但对于第二种情况,我们为用户提供了根据其需求输入等级的选择。因此,当等级规则发生变化时,代码将不会被更改。

当您为用户定义业务逻辑提供更多选项时,这是非常重要的事情。第一种情况就是硬编码

因此,在您的问题中,如果您要求用户在开始时输入文件路径,则可以从代码中删除硬编码路径。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接