我在哪里可以存储文件夹的路径,可以从 C 程序中的每个函数/变量访问?前任。我在 path 中有一个名为 do_input.exe 的可执行文件c:\tests\myprog\bin\do_input.exe
,在等中有一个名为 do_input.exe 的可执行文件C:\tools\degreesToDms.exe
,等等。我应该如何以及在哪里存储这些?
我将它们作为字符串存储在一个头文件中,该头文件包含在每个项目的文件中,但有人不鼓励这样做。他们是对的吗?
我在哪里可以存储文件夹的路径,可以从 C 程序中的每个函数/变量访问?前任。我在 path 中有一个名为 do_input.exe 的可执行文件c:\tests\myprog\bin\do_input.exe
,在等中有一个名为 do_input.exe 的可执行文件C:\tools\degreesToDms.exe
,等等。我应该如何以及在哪里存储这些?
我将它们作为字符串存储在一个头文件中,该头文件包含在每个项目的文件中,但有人不鼓励这样做。他们是对的吗?
.h
如果它们保持不变,那么我认为在引用路径的所有各种 .c 文件中包含的“”头文件中定义这些路径没有任何问题。但是运行这个东西的每台计算机都可能有不同的路径(“ Tests
”而不是“ test
”),所以这是一种超级危险的编程,并且只有在你控制的单台机器或一组机器上运行它时才可能安全直接地。
如果路径会改变,那么您需要为这些路径创建一个存储位置(例如静态字符数组等),然后有方法允许这些路径被获取并可能动态重置(例如,而不是将输出文件写入“ results
” ,也许用户想要改变一些东西以将文件写入“ /tmp
”)。完全取决于您在代码中执行的操作以及您编写的工具将执行的操作。
我将它们作为字符串存储在一个头文件中,该头文件包含在每个项目的文件中,但有人不鼓励这样做。他们是对的吗?
是的,他们是绝对正确的:将带有文件系统中路径的安装特定字符串“烘焙”到编译代码中并不是一个好的决定,因为您必须重新编译以更改某些关键文件的位置。这限制了团队其他成员运行测试的灵活性,并且可能会阻止您的测试在自动化测试环境中自动运行。
更好的解决方案是使用带有关键目录位置的纯文本配置文件,以及读取该文件并在运行时生成正确位置的函数。
或者,您可以将关键目录的位置作为命令行参数提供给您的程序。这样,运行您的程序的用户无需重新编译即可设置正确的位置。