查看: 1396|回复: 4
|
C programming 一点点小混乱
[复制链接]
|
|
发表于 14-12-2008 12:35 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 14-12-2008 02:43 PM
|
显示全部楼层
这个问题非常好。我本身也不知道完整的答案。不过大概大概知道。以前有问过老师。
main() , void main () 和 void main (void)
在embedded c(一部分) 里面, 这是没有分别的。如果你是写给embedded c(一部分),你会发觉到三个都是一样的。
未必所有embedded c compiler是ansi-c standard,所以embedded c compiler接受到的syntax未必是c standard.
如果你是写给microcontroller, pic大大的解释是对的。 我们永远不会从main 跳出来。所以三者是同样的。
不过如果你要你的code highly portable,你最好跟ansi-c standard走。选用int main (void)
*注:以下是for ur extra information,你可以选择不要读,可能会更blur.
以上三个main function在standard c里面没有一个是正确的。
对的是这个
int main ( void )
int main ( int argc, char *argv[])
c 里面main 一定要return int. 这个告诉电脑这个program execute correctly or not.
有些embedded c还是跟回c standard也就是以上那三个没有一个可以被compile。
我用过一些mcu的compiler(ansi-c standard), .
要用int main (void)才能成功compile.
参考
http://blog.chinaunix.net/u1/57911/showart_500967.html
http://users.aber.ac.uk/auj/voidmain.shtml |
|
|
|
|
|
|
|
请别怪我问那么简单的问题,真是不好意思。 想知道,到底 main() , void main () 和 void main (void) 有什么分别?谢谢! |
|
|
|
|
|
|
|
发表于 14-12-2008 07:43 AM
|
显示全部楼层
原帖由 cincailo 于 14-12-2008 12:25 AM 发表
请别怪我问那么简单的问题,真是不好意思。 想知道,到底 main() , void main () 和 void main (void) 有什么分别?谢谢!
当我们看到void xxx(), 就知道这个function / sub routine 不会return value.
当我们看到xxx(void), 就知道这个function / sub routine 不会接受passing argument .
main() , void main () 和 void main (void) 都是一样的功能。
void main(), 是告诉compiler , main() 这个function 不会return 任何value。
void main(main), 是告诉compiler , main() 这个function 不会传回任何数字,
也没有任何input argument/ parameter。
eg:
int mymain() 是告诉compiler , mymain() 这个procedure/ function 会传回(return)int 的数字。
char mymain() 是告诉compiler , mymain() 这个procedure/ function 会传回(return)char 的字句。
int mymain(int x) 是告诉compiler , mymain() 这个procedure/ function 会传回(return)int 的数字,
还有输入的一个函数x是int type。
void main(),是最常的写法。
[ 本帖最后由 pic 于 14-12-2008 07:44 AM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 14-12-2008 11:58 PM
|
显示全部楼层
回复 4# fritlizt 的帖子
谢谢你说我问得好。。。 起初还担心这个问题太简单。 原来是这样,大概明白,会再慢慢研究。 谢谢哦! |
|
|
|
|
|
|
| |
本周最热论坛帖子
|