如何解决如何在Makefile中输出.txt文件?
我正在尝试使用Makefile构建C程序,但不幸的是,即使转义并尝试了其他转义技术,尝试调用已定义的变量时也会出错。
文本文件greetings-file.txt包含字符串"Goodnight Moon!\n"
这是我的代码:
F= greetings-file.txt
M= Makefile-hello
# complete the makefile as instructed in the quiz2.txt file # you will need to add dependencies after the target(s)
# as well as actions in the recipes
program: hello
@echo run hello
./hello
hello.c:
@echo make hello.c based on $F and $M
@echo "#include<stdio.h>" > hello.c
@echo "int main(){printf(\"`cat $F`\");}" >> hello.c
hello: hello.c
@echo compile hello.c
cc -o hello hello.c
clean:
@echo cleanup hello
-rm hello hello.c
这是我的错误:
compile hello.c
cc -o hello hello.c
hello.c: In function ‘main’:
hello.c:2:21: error: expected ‘)’ before ‘Goodnight’
int main(){printf(""Goodnight Moon!
^~~~~~~~~
hello.c:2:19: warning: zero-length gnu_printf format string [-Wformat-zero-length]
int main(){printf(""Goodnight Moon!
^~
Makefile-hello:27: recipe for target 'hello' failed
make: *** [hello] Error 1
解决方法
编译器消息将向您显示失败的语句的第一部分,甚至可以帮助指出错误的确切位置:
int main(){printf(""Goodnight Moon! ^~~~~~~~~
它发出的详细消息也很有用,描述了一个零长度的格式字符串,并指出C语法不允许在“晚安”中的“ G”出现时使用常规文本。两者都将您指向同一件事:文字“晚安月亮!”旨在显示在字符串文字(该文字将作为printf
的格式字符串)内,但出现一个空字符串(""
),其后是文字。
为什么?因为引号直接来自make
执行的用于生成源文件的命令:
@echo "int main(){printf(\"`cat $F`\");}" >> hello.c
here -----------------------------^
,另一个来自文件greetings-file.txt
,您所说的文件实际上包含了
"Goodnight Moon!\n"
问候行的末尾也出现了类似的问题。我怀疑关于这些文件的准备存在一些误解,但这也许是练习的全部内容。无论如何,都需要使用一组引号(或者可以简单地将makefile中的引号引起来)。
,您在printf语句中忘记了结尾“
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。