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