我需要协助。

我在本地从事C项目,它运行完美,没有任何问题。
然后,我将整个项目文件移至Linux服务器(使用Bitwise),并使用以下命令运行该文件:

gcc -g -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG main.c map.c map.h utilities.c
utilities.h election.c election.h extended_map.c extended_map.h test_utilities.h -o outmap

一切都按预期工作。

现在,我想用保存在该服务器上的版本替换test_utilities.h的版本,因此我打开了main.c(这是唯一包含test_utilities.h的文件,并进行了替换:
#include "test_utilities.h"


#include "~mtm/public/1920b/ex1/test_utilities.h"

但是终端显示了以下错误:
gcc: error: test_utilities.h: No such file or directory
-bash-4.2$

按照建议,我将其更改为
gcc -g -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG main.c map.c map.h utilities.c utilities.h election.c election.h extended_map.c extended_map.h test_utilities.h -o outmap -I ~mtm/public/1920b/ex1/

但是我仍然得到以下信息:

gcc:错误:test_utilities.h:没有这样的文件或目录

update2 :(我被要求删除.h文件,所以我现在知道了)
gcc -g -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG main.c map.c utilities.c election.c extended_map.c -o outmap

最佳答案

编写~mtm以引用用户mtm的主目录是您的Shell可以理解的快捷方式。 C预处理程序无法理解。因此,您必须将其拼写为/home/mtm(或mtm的主目录所在的位置),而不是~mtm

也就是说,更好的方法是将其保留为"test_utilities.h",而是调整编译器的包含路径(调用编译器时通过-I指定)以包括~mtm/public/1920b/ex1/

您也不应该将test_utilities.h指定为编译器的参数。实际上,任何头文件都不应作为参数传递给编译器。

10-07 18:58