gcc on Windows: generated "a.exe" file vanishes

c, gcc, windows

Solution

(Since ahoffer's deleted answer isn't quite correct, I'll post this, based on information in the comments.)

On Windows, gcc generates an executable named `a.exe` by default. (On UNIX-like systems, the default name, for historical reasons, is `a.out`.) Normally you'd specify a name using the `-o` option.

Apparently the generated `a.exe` file generates a false positive match in your antivirus software, so the file is automatically deleted shortly after it's created. I see you've already contacted the developers of Avast about this false positive.

Note that antivirus programs typically check the contents of a file, not its name, so generating the file with a name other than `a.exe` won't help. Making some changes to the program might change the contents of the executable enough to avoid the problem, though.

You might try compiling a simple "hello, world" program to see if the same thing happens.

Thanks to Chrono Kitsune for linking to this relevant Mingw-users discussion in a comment.

This is not relevant to your problem, but you should print a newline (`'\n'`) at the end of your program's output. It probably doesn't matter much in your Windows environment, but in general a program's standard output should (almost) always have a newline character at the end of its last line.

Problem

I'm using GCC version 4.7.1, but I've also tried this on GCC 4.8. Here is the code I'm trying to compile: ``` #include <stdio.h> void print(int amount) { int i; for (i = 0; i < 5; i++) { printf("%d", i); } } int main(int argc, char** argv) { print(5); return 0; } ``` It looks like it should work, and when I compile with... ``` gcc main.c ``` It takes a while to compile, produces an `a.exe` file and the the `a.exe` file disappears. It isn't giving me any errors with my code. Here's a gif of proof, as some people are misinterpreting this:

Original source