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 + 32 + 2。这两个总和(代表 .m 文件)的计算结果均为 4,但仅给定 4,您无法判断它是由 1 + 3 还是 2 + 2.[=23 生成的=]

或者,您可以生成任何您想要的总和(0 + 41 + 31.5 + 2.5),但没有人会说它是 "wrong" 总和。同样,您可以生成无限数量的有效 .m 文件中的任何一个,当 运行 到 m4 时,这些文件会返回原始 .c 文件,但它不会真的是一件有用的事情。