2016-07-17 1 views
0

Чтобы преобразовать файл C из м файла я используюКак преобразовать файл C в файл .m в bash?

m4 prog.m > prog.s 
gcc -o prog prog.s 
./prog 

Можно ли пойти другим путем?

Я знаю, что вы можете сделать

gcc -S prog.c 

, чтобы сделать его .с файл, но как я могу получить его в .m?

+0

Это первая строка, которая должна быть 'm4 prog.m> prog.c'? –

+0

Нет. Что я написал, должен был перейти от .m к .c. С .m файлом вам нужно преобразовать в .s с помощью m4 prog.m> prog.s. Затем один раз в сборке вам нужно преобразовать это в C, используя gcc. Вопрос, который я задал, состоял в том, как перейти к обратному пути от .c к .m, но ниже ответ положил проблему довольно хорошо. –

+0

Вы говорите, что gcc конвертирует язык ассемблера в C? Даже если это произошло, вы не ссылаетесь на 'prog.s' после его создания. –

ответ

0

Вы не можете, и непонятно, зачем вам это нужно. Файл .m на самом деле не связан с C; он просто содержит определенные макросы, которые расширяются на m4, чтобы создать новый текстовый файл. Вы не можете указать только из выходного файла, который был создан макросами.

Простая аналогия - это пара сумм, таких как 1 + 3 и 2 + 2. Две суммы (представляющие файлы .m) оцениваются до 4, но только с учетом 4, вы не можете сказать, была ли она произведена с 1 + 3 или 2 + 2.

В качестве альтернативы вы можете сгенерировать любую сумму, которую вы хотите (0 + 4, 1 + 3, 1.5 + 2.5), и никто не мог сказать, что это была «неправильная» сумма. Аналогичным образом, вы можете создать любое из бесконечного числа действительных файлов .m, которые при прохождении через m4 вернут исходный файл .c, но это было бы не очень полезно.

+0

А это имеет смысл. Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^