-1

所以我是新来的,遇到了这个问题

333.o: 333.c
gcc -c 333.c 


clean: rm *.o hell  

这是我要编译的文件

#!/bin/bash    
echo "enetered number $1 threshold $2"

错误 c:1:2 无效的预处理指令 #! c:2:字符串常量前应有 '=', ',',';','asm' 或 '_attribute '

怎么了?想不通

谢谢你

4

1 回答 1

1
  • 你正试图用螺丝刀敲钉子——你使用了错误的工具来完成这项工作。
  • 您正在尝试与(单语)法语说普通话 - 您使用了错误的语言。

您尝试编译的文件内容表明它是一个 shell 脚本而不是 ac 文件。但是,当make看到文件有.c扩展名时,它会尝试编译它,就好像它是 ac 文件一样,其内容显然不是。

在你继续之前,我建议你看看编译语言和解释语言之间的区别

bash是一种解释型语言——根本不需要编译器。只需授予文件执行权限并运行它。 bash将逐行解析和解释文件并采取必要的措施

c是一种编译语言。在定义 ac 程序的源代码可以运行之前,必须对其进行编译。编译器解析 .c 文件并生成二进制目标文件,其中包含您的 CPU 直接理解的机器指令。

要运行您的 bash shell 脚本,我将执行以下操作:

mv 333.c 333.sh           ; # rename to prevent any confusion
chmod +x 333.sh           ; # give the bash script executable permissions
./333.sh 42 69            ; # run the script - give it some args, since your script references $1 and $2
于 2013-10-02T00:51:09.163 回答