关于“void main()”的疑问C/C++ codevoid main()请问下各位,这个到底是在哪个编译器用的写法,或者说是哪本
关于“void main()”的疑问
C/C++ codevoid main()
请问下各位,这个到底是在哪个编译器用的写法,或者说是哪本教材指明可以这样用的?
C语言标准中应该没有这样的写法吧?如果我没记错的话。
——在CSDN的帖子有很多人这样写的,忍不住想请教一下。
(本人长期潜水,发帖顺便浮上水面提高下知名度:))
[解决办法]c++要求int main
c可以 void main
[解决办法]我很负责任的告诉你
标准c中只定义了main的返回值为int
上面的写法是未定义的
但是大部分编译器都默许了这种写法
但是这个写法是否就是错的呢?
答案是否定的!在嵌入式软件中就是这样写的,请别惊讶,这是需要这样写的!
有兴趣的话可以去研究下为什么这样写!
[解决办法]接上,所以呢,WINDOWS用MingW编译比较好~
:)
[解决办法]标准C只是说当main函数采用下面两种方式时,应该满足怎样的标准
int main(void);
int main(int, char* []/char**);
并没有对main作硬性规定,标准C允许对main作不同形式的声明
The function called at program startup is named main. The implementation declares no
prototype for this function. It shall be defined with a return type of int and with no
parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may be
used, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.
C++里面要求main地返回值是int,(如果我没有对下面的C++标准里这句话理解错的话)
An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return
type of type int, but otherwise its type is implementation-defined.
ls的"在嵌入式软件中就是这样写的,请别惊讶,这是需要这样写的!
有兴趣的话可以去研究下为什么这样写!"
这句话我想当困惑,我一直作arm体系的项目,对于ls的这句话相当不以为然,如果ls指的嵌入式包括arm的话,还请ls解释一下。
[解决办法]从来都写int main,写void编译不过。
[解决办法]void main() 能编译通过啊.
个人习惯写成这样,可以少写个return ..
[解决办法]int main 告诉程序的执行情况
返回0表示执行成功
返回非0表示执行失败
windows下
你可以写一个程序然后放在d:下
接着,开始->运行->cmd->d:
输入(假设应用程序名是test.exe)test && dir
如果程序有int main 在执行中以return 0;返回
那么会执行dir
否则就不会执行dir
(由于返回值是放在eax里,所以无论是void main还是int main
只要保证返回的时候eax为0,就认为程序是成功执行了.
__asm
{
xor eax, eax
}
当然,用void的时候可以加上面一句强行使eax为0,而认为成功执行
用int的时候,不加return 0;而使执行到}自然返回,那么这个时候的eax也认为是返回值,只不过是随机值,为0的情况比较小)
[解决办法]我只知道在VC中可以用
void main(){
}
从标准来说,显然是不允许的。
还没有试过,不过怀疑在Windows下使用
定义一个大结构
struct A{
..
...
};
struct A main(){
}
编译都能够过,就是不知道会不会执行时出问题。
[解决办法]出自什么书并不重要!重要的是掌握void类型的含义。
void在c/c++中是一种基本类型,void被刻画成一个函数并不返回值,void类型本身不能拥有对象(void x;定义错)。
因此,void main()跟int main()的区别就是前者不返回值,后者返回整形值!~~仅此而已
[解决办法]其实main 函数是一个测试函数,和其他函数一样,可以有返回值,也可以没有啊