Программирование на C - Написание текстового файла, который компилируется сам - PullRequest
3 голосов
/ 16 апреля 2011

Я пытаюсь записать файл на диск, который затем автоматически перекомпилируется. К сожалению, sth не работает, и я получаю сообщение об ошибке, которое еще не понимаю (я начинающий на C :-). Если я скомпилирую созданный hello.c вручную, все будет работать?!

#include <stdio.h>
#include <string.h>

    int main()
    {
        FILE *myFile;
        myFile = fopen("hello.c", "w");
        char * text = 
        "#include <stdio.h>\n"
        "int main()\n{\n"
        "printf(\"Hello World!\\n\");\n"
        "return 0;\n}";
        system("cc hello.c -o hello");
        fwrite(text, 1, strlen(text), myFile);  
        fclose(myFile);
        return 0;
    }

Это ошибка, которую я получаю:

/ usr / lib / gcc / x86_64-linux-gnu / 4.4.5 /../../../../ lib / crt1.o: в функции _start': (.text+0x20): undefined reference to main ' collect2: ld вернул 1 статус выхода

Ответы [ 3 ]

5 голосов
/ 16 апреля 2011

Это потому, что вы вызываете system для компиляции файла до , когда вы записали в него исходный код программы. И поскольку на тот момент ваш hello.c является пустым файлом, компоновщик жалуется, вполне справедливо, что он не содержит функцию main.

Попробуйте изменить:

system("cc hello.c -o hello");
fwrite(text, 1, strlen(text), myFile);  
fclose(myFile);

до:

fwrite(text, 1, strlen(text), myFile);  
fclose(myFile);
system("cc hello.c -o hello");
0 голосов
/ 16 апреля 2011

Разве вы не должны сначала написать файл и закрыть файл, прежде чем вызывать систему для компиляции файла? Я считаю, что это ваша проблема.

0 голосов
/ 16 апреля 2011

Вы пытаетесь скомпилировать файл до того, как напишите файл?

...