bash 如何将 C 文件转换为 .m 文件?
How to convert a C file to a .m file in bash?
要从 m 文件转换为 C 文件,我使用
m4 prog.m > prog.s
gcc -o prog prog.s
./prog
是否可以走另一条路?
我知道你能做到
gcc -S prog.c
使其成为 .s 文件,但如何将其转换为 .m 文件?
你不能,而且还不清楚你为什么需要这样做。 .m
文件与 C 无关;它仅包含某些由 m4
扩展以生成新文本文件的宏。您无法仅从输出文件中分辨出哪些文本是由宏生成的。
一个简单的类比是一对和,如1 + 3
和2 + 2
。这两个总和(代表 .m
文件)的计算结果均为 4,但仅给定 4,您无法判断它是由 1 + 3
还是 2 + 2
.[=23 生成的=]
或者,您可以生成任何您想要的总和(0 + 4
、1 + 3
、1.5 + 2.5
),但没有人会说它是 "wrong" 总和。同样,您可以生成无限数量的有效 .m
文件中的任何一个,当 运行 到 m4
时,这些文件会返回原始 .c
文件,但它不会真的是一件有用的事情。
要从 m 文件转换为 C 文件,我使用
m4 prog.m > prog.s
gcc -o prog prog.s
./prog
是否可以走另一条路?
我知道你能做到
gcc -S prog.c
使其成为 .s 文件,但如何将其转换为 .m 文件?
你不能,而且还不清楚你为什么需要这样做。 .m
文件与 C 无关;它仅包含某些由 m4
扩展以生成新文本文件的宏。您无法仅从输出文件中分辨出哪些文本是由宏生成的。
一个简单的类比是一对和,如1 + 3
和2 + 2
。这两个总和(代表 .m
文件)的计算结果均为 4,但仅给定 4,您无法判断它是由 1 + 3
还是 2 + 2
.[=23 生成的=]
或者,您可以生成任何您想要的总和(0 + 4
、1 + 3
、1.5 + 2.5
),但没有人会说它是 "wrong" 总和。同样,您可以生成无限数量的有效 .m
文件中的任何一个,当 运行 到 m4
时,这些文件会返回原始 .c
文件,但它不会真的是一件有用的事情。