我正在使用GCC版本4.7.1,但我也在GCC 4.8上尝试过这个.这是我正在尝试编译的代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
它看起来应该工作,当我编译时......
gcc main.c
Run Code Online (Sandbox Code Playgroud)
编译需要一段时间,生成一个a.exe文件,a.exe文件就会消失.我的代码没有给我任何错误.
这是一个证据的GIF,因为有些人误解了这个:

(由于ahoffer 删除的答案不太正确,我会根据评论中的信息发布此内容.)
在Windows上,gcc生成一个a.exe默认命名的可执行文件.(在类UNIX系统上,出于历史原因,默认名称是a.out.)通常,您使用该-o选项指定名称.
显然,生成的a.exe文件会在您的防病毒软件中生成误报匹配,因此该文件会在创建后立即自动删除.我看到你已经联系过Avast的开发者这个误报.
请注意,防病毒程序通常会检查文件的内容,而不是其名称,因此使用其他名称生成文件a.exe将无济于事.但是,对程序进行一些更改可能会更改可执行文件的内容,以避免出现问题.
您可以尝试编译一个简单的"hello,world"程序,看看是否发生了同样的事情.
感谢Chrono Kitsune 在评论中链接到相关的Mingw用户讨论.
这与您的问题无关,但您应该'\n'在程序输出结束时打印换行符(\n ).它在Windows环境中可能并不重要,但通常程序的标准输出应该(几乎)总是在其最后一行的末尾有一个换行符.
| 归档时间: |
|
| 查看次数: |
5750 次 |
| 最近记录: |