Я хочу провести некоторое тестирование и хочу, чтобы входной файл передавался непосредственно компилятору c, а не был предварительно запрограммирован. Как я могу это сделать? Благодаря!Как сделать предварительную обработку gcc skip?
ответ
Если исходный файл, который вы не хотите предварительно обрабатывать, является исходным файлом C foo.c
, а затем переименуйте его в foo.i
. Если это исходный файл C++, то переименуйте его в foo.ii
. Это заставит компилятор пропустить предварительную обработку. Просто скомпилируйте, как обычно, например.
gcc -c -o foo.o foo.i
Однако, если вы пытаетесь скомпилировать исходный файл, содержащие директивы предварительной обработки («#» - линия) без предварительной обработки его затем компиляция будет просто не в состоянии, как:
$ cat foo.c
#include <stdio.h>
int main()
{
puts("Hello world");
return 0;
}
$ cp foo.c foo.i
$ gcc -c -o foo.o foo.i
foo.i:1:1: error: stray ‘#’ in program
#include <stdio.h>
^
foo.i:1:10: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
#include <stdio.h>
^
Возможно, что вы хотите сделать, это скомпилировать исходный файл, который вы уже предварительно обработали без , предварительно обработав его. В этом случае, первый предобработки foo.c
, писать вывод в foo.i
, затем скомпилировать foo.i
:
$ cpp foo.c > foo.i
$ gcc -c -o foo.o foo.i
$ gcc -o foo foo.o
$ ./foo
Hello world
Предположительно вы могли бы сделать что-то с, или, foo.i
между его создания и компиляции; иначе вы могли бы просто скомпилировать foo.c
.
gcc in my machine is a symbolic link to clang
OS X? Не важно: вы можете заменить clang
на gcc
на все вышеперечисленное.
- 1. Как сделать чтение данных и предварительную обработку быстрее в C#
- 2. Сохранить предварительную обработку/агрегацию CPLEX
- 3. Как выполнить предварительную обработку всех вызовов?
- 4. Есть ли способ сделать предварительную обработку при связывании статических библиотек?
- 5. Как отключить/включить предварительную выборку в GCC?
- 6. Как избежать многократного предупреждения от gcc, когда я использую предварительную обработку # Предупреждение в .h
- 7. Как использовать предварительную обработку/нормализацию scikit вместе с перекрестной проверкой?
- 8. Как загрузить нестандартизированный CSB-файл и его предварительную обработку
- 9. Как я могу выполнить предварительную обработку Cloud ML в облаке?
- 10. Orange3 как повторно применить предварительную обработку к новым данным
- 11. Как настроить меньшую предварительную обработку в karma jasmine css testing
- 12. Как добавить пользовательскую предварительную обработку запроса к бегемоту?
- 13. Есть ли способ централизовать предварительную обработку всех журналов, созданных монологом?
- 14. Как сделать предварительную проверку с помощью Git
- 15. Как сделать предварительную пересылку в Zend Framework?
- 16. Apache Pig 0.12.0 on Hue не выполняет предварительную обработку заявлений
- 17. Как сделать виртуальную обработку файлов?
- 18. Как сделать обработку общего Exception
- 19. Grako - Как сделать обработку ошибок?
- 20. Сделать Xcode skip nib компиляцией
- 21. Как сделать «git bisect skip» в TortoiseGit?
- 22. Как сделать py.test --cov skip virtualenv directory
- 23. Различные способы сделать предварительную проверку правды
- 24. Как сделать обработку изображения, как FaceGoo
- 25. Как реализовать предварительную обработку свойств перед выполнением, как это делается в Grunt?
- 26. Как сделать обработку исключений в Wicket
- 27. Как сделать обработку изображений в Android?
- 28. Как сделать обработку релиза для проектов R
- 29. Как сделать обработку выхлопных газов в SAS
- 30. Как сделать многопоточную обработку в последовательности?
Я не думаю, что есть способ сделать это в 'совместимый компилятор C'. –
Вы можете посмотреть, есть ли способ заменить команду do-nothing для препроцессора. Номинально это похоже на 'cat', за исключением того, что вам нужно игнорировать большинство опций, которые он передал. Это будет нелегко. Это также удивительно. Если код собирается компилироваться, несмотря на то, что он не выполняется через препроцессор, это должно означать, что препроцессор ничего не сделает, поэтому не имеет значения, действительно ли используется препроцессор. –
Опция '-fpreprocessed' сообщает компилятору * gcc *, что входной файл уже предварительно обработан. Это подавляет большую часть задачи предварительной обработки. –