Ваш вопрос, скорее всего, неверно направлен (у вас может быть проблема XY ): компиляция C
редко является тривиальным вопросом запуска компилятора поверх него: вам, вероятно, нужно знать, что -I
и -D
(и другие) флаги, с которыми он должен быть скомпилирован, с какими библиотеками нужно связать и т. Д. И т. Д.
как я могу проверить, является ли файл ac файлом?и как мне скомпилировать его, используя код?
Вы можете запустить system("gcc -c $file.c")
, и если он скомпилируется (system
возвращает 0), это, вероятно, был C
файл.
Примечание: если файл не не компилируется, это может быть связано с тем, что он не является файлом C
или вы не передали правильные флаги компилятору.
как мне запустить текущий файл?
Примерно так:
char path[PATH_MAX];
char cmd[4096 + 2*PATH_MAX];
snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
snprintf(cmd, sizeof(cmd), "gcc -c %s -o %s.o", path, path);
if (system(cmd) == 0) {
printf("Compiled %s to %s.o\n", path, path);
}