关于main与wmain函数】的更多相关文章

最近写一个控制台程序,并且希望该控制台程序运行时不显示控制台窗口,于是在程序include语句下面加入如下代码 #pragma comment (linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"") 而原先的控制台程序入口为int wmain(int argc, _TCHAR* argv[]),必须要改为main才能编译通过 但是问题来了,原来运行没问题的代码,现在出问题了 if (…
main函数与WinMain函数区别: 前者为控制台程序入口主函数,后者为Windows API窗体程序入口函数,在windef.h文件中定义. main函数与wmain函数 | WinMain函数与wWinMain函数的区别: wmain函数是main函数的宽字符版本,一般在Unicode编码下使用. tmain函数与main和wmain | tWinMain函数与WinMain和wWinMain的区别: _tmain函数是wmain函数和main函数Unicode版本的别名,_tWinMai…
public static void main(String[] args){}函数诠释 主函数的一般写法如下: public static void main(String[] args){-} 下面分别解释这些关键字的作用: (1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数. (2)static关键字,告知编译器main函数是一个静态函数.也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了.如果main()方法…
可以有多个Main()函数,这样写:namespace ConsoleApp1{class Program{static void Main(string[] args){Console.WriteLine("Program");Console.ReadKey();}} class Program1{static void Main(string[] args){Console.WriteLine("Program1");Console.ReadKey();}}}然…
今天在用MDK调试stm32时出现了无法进入main函数,进入startup文件的情况. 在网上查找资料时发现,MDK调试设置断点最多只能设置5个.在减少断点后,调试果然能够正常进入main()函数了.…
主函数的一般写法如下: public static void main(String[] args){…} 下面分别解释这些关键字的作用: (1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数. (2)static关键字,告知编译器main函数是一个静态函数.也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段 代码就 已经存在了.如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示m…
一.main()函数的形式 int main( void )--无参数形式 { ... return 0; } int main( int argc, char *argv[] )--带参数形式 { ... return 0; } int指明了main()函数的返回类型,函数名后面的圆括号一般包含传递给函数的信息. void表示没有给函数传递参数. 关于带参数的形式,我们等会讨论. 浏览老版本的C代码,将会发现程序常常以 main() 这种形式开始.C90标准允许这种形式,但是C99标准不允许.…
Qt Windows下链接子系统与入口函数(终结版) 转载自:http://blog.csdn.net/dbzhang800/article/details/6358996 能力所限,本讨论仅局限于MSVC的cl编译器和MinGW的gcc编译器. 第一部分:不涉及Qt(理清链接子系统和入口函数) 第二部分:Qt的链接子系统和入口函数(与第一部分完全对应上) 第三部分:QtTest模块出现控制台的原因与方案 第四部分:Graeme Gill 给出的很有意思的代码. 再探 链接子系统 在  浅谈Co…
编写一个两数交换函数swap,具体代码如下: #include<stdio.h> void swap(int *p1,int *p2) { int temp; temp = *p1; *p1 = *p2; *p2= temp; //printf("p1=%d,p2=%d,temp=%d\n",p1,p2,temp); } void main(){ ; ; char *str1="a=%d,b=%d\n"; printf("++++++\n&qu…
整理日:2015年3月18日 为了这句话丢了很多次人.无所谓了,反正咱脸皮厚. 总结一下 编译出来的c/c++程序的参数压栈顺序只和编译器相关! 下面列举了一些常见的编译器的调用约定 VC6 调用约定 堆栈清除 参数传递 __cdecl 调用者 从右到左,通过堆栈传递 __stdcall 函数体 从右到左,通过堆栈传递 __fastcall 函数体 从右到左,优先使用寄存器(ECX,EDX),然后使用堆栈 thiscall 函数体 this指针默认通过ECX传递,其它参数从右到左入栈 __cde…
var  ExeName:PChar;  StartupInfo:TStartupInfo;  ProcessInfo:TProcessInformation;begin  FillChar(ProcessInfo,sizeof(TProcessInformation),0);  FillChar(StartupInfo,Sizeof(TStartupInfo),0);  StartupInfo.cb:=Sizeof(TStartupInfo);  StartupInfo.dwFlags:=ST…
大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在“使用”它,而不会想去“了解”它.因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上.我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试.但是,所谓:“公欲善其事,必先利其器”.如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? VC的处理流程,大致分为两步:编译和连接.源文件通过编译生成了.obj文件:所有.obj文件和.lib文件通过连接…
[原文:http://wenku.baidu.com/view/f10a241dff00bed5b9f31ddd.html] 做开发差不多一年多了,突然感觉对VC的工程设置都不是很清楚,天天要和VC见面,虽然通常情况下一般都不会修改工程设置,但是还是有必要对它的一些设置项的来龙去脉有一定的了解,所以狂查资料,稍作整理,总结一篇文档,方便以后查阅,总得记录点什么,温故而知新嘛. 进入工程设置界面有两种方法: 方法一,选择法:[Project]->[Settings] 方法二,快捷键:[Alt+F7…
其实软件调试还是一个技术熟练过程,得慢慢自己总结,可以去搜索引擎查找一些相关的文章看看,下边是一篇关于VC6使用的小文章,贴出来大家看看: 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在“使用”它,而不会想去“了解”它.因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上.我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试.但是,所谓:“公欲善其事,必先利其器”.如果我们精于VC开发环境,我们是不是…
主要通过VC的菜单项Project->Settings->C/C++页来完成.我们可以看到这一页的最下面Project Options中的内容,一般如下:/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_AFXDLL" /D "_MBCS" /Fp"Debug/WritingDlgTes…
VC编译连接选项详解 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在“使用”它,而不会想去“了解”它.因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上.我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试.但是,所谓:“公欲善其事,必先利其器”.如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? VC的处理流程,大致分为两步:编译和连接.源文件通过编译生成了.obj文件:所有.obj文件…
http://zh.wikipedia.org/wiki/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A 这里描述了在x86芯片架构上的调用约定(calling conventions). 调用约定描述了被调用代码的接口: 原子(标量)参数,或复杂参数独立部分的分配顺序; 参数是如何被传递的(放置在栈上,或是寄存器中,亦或两者混合); 被调用者应保存调用者的哪个寄存器; 调用函数时如何为任务准备堆栈,以及任务完成如何恢复; 这与编程语言中对于大小和格式的分配紧密相…
大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在"使用"它,而不会想去"了解"它.因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上.我们习惯于这样一种"模式":建立一个项目,然后写代码,然后编译,反反复复调试.但是,所谓:"公欲善其事,必先利其器".如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢? Visual C++可新建的 Project…
本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=vs-2019 (除动态链接库dll,静态链接库lib工程外)所有的C++程序都必须有一个main函数.如果你编译一个没有main函数的C++exe工程,编译器会提示错误.main函数是你的代码开始执行的地方,但在main函数调用前,所有的没有被显示初始化的static类成员都被设置为零.在微软C++中,调用main函数前全局静态…
main()函数,想必大家都不陌生了,从刚开始写程序的时候,大家便开始写main(),我们都知道main是程序的入口.那main作为一个函数,又是谁调用的它,它是怎么被调用的,返回给谁,返回的又是什么?这次我们来探讨一下这个问题. 1. main()函数的形式先来说说main函数的定义,较早开始写C程序的肯定都用过这样的定义void main(){},其实翻翻C/C++标准,从来没有定义过void main().在C标准中main的定义只有两种:        int main(void)   …
namespace ConsoleApp1{class Program{static void Main(string[] args){Console.WriteLine("Program");Console.ReadKey();}} class Program1{static void Main(string[] args){Console.WriteLine("Program1");Console.ReadKey();}}}然后在菜单Project->**…
一.static关键字:静态的,它可以修饰成员变量和成员方法 1.修饰成员变量的情况,当类所属对象中存在共享数据时,我们就可以把数据对应的属性定义为静态的,这里的共享数据是对象数据相同,而不是拥有相同的属性.举例如下: class Person {  String name;  int age;  String country; } 类创建的对象如果国籍都是中国,那么我们就可以  static    String  country:把这个变量定义成静态的,它是存放在方法区,就是data  seg…
1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain. 2.  你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数.vc这时的默认设置是针对控制台程序的. 三, 解决方法1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_WINDOWS, 添加_CONSOLE 2.进入project-…
每一个C语言的初学者,都会注意到主函数main()里的两个参数,但是初学者一般不会去关注这两个参数的具体作用,下面我们就来介绍这两个参数的具体作用. main()函数是控制台程序的入口,int main(int argc,char *argv[]) 是 UNIX 和 Linux 中的标准写法,而 int main() 只是 UNIX 及 Linux 默许的用法. main()是可以接受参数的,也叫命令行参数,argc表示命令行参数的个数,argv等价于一个char型的二级指针,可用来存放若干个字…
VS2015版本release查找main函数入口 vc++开发的程序main或WinMain函数是语法规定的用户入口,而不是应用程序入口.入口代码是mainCRTstartup.wmainCRTStartup.WinMainCRTSartup或wWinMainCRTStarup,具体情况由编译器制定. VS2015版本debug查找main函数在<VS程序反汇编找main函数>.release版本找main函数入口有所区别的地方在于一开始就单步步过一个call指令,jmp跳转.然后经过三个p…
Main()方法. C#程序是以Main()开始执行的,这个方法必须是类或结构的静态方法,并且其返回类型必须是int或者void. 虽然显示指定public修饰符很常见,但是我们也可以把该方法标记为private,也可以运行. Main()方法只能有一个,如果有多个就会出现错误. 如果非得写两个Main()方法,可以在菜单Project->***** Properties->Application选项卡中的Startup object:中,选择你希望那个作为程序入口的Main()函数所在的类的…
这一章节我们来讨论一下main函数. 对于这个函数大家都不陌生,并且都习以为常.可是当中有一些东西,还是值得我们去总结的. 1.普通的main package com.ray.test; public class MainTest { public static void main(String[] args) { } } 没什么特别.就是一个main的空方法 2.没有static的main package com.ray.test; public class MainTest { public…
背景减法库(BGS Library = background subtraction library)包含了37种背景建模算法,也是目前国际上关于背景建模技术研究最全也最权威的资料.本文将更加详细的介绍背景减法库(BGS Library)的基本框架与入口函数main()的功能. BGS库的整体框架在背景建模技术(二)中已经全部给出,此处从函数的角度再次给出BGS库的基本框架,有利于代码的修改与维护. 如下图所示是基于C++的BGS库的函数流程图: 接下来将会对每个函数进行更加详细的分析. 首先,…
       所有的C程序必须定义一个称之为main的外部函数,这个函数是程序的入口,也就是当程序启动时所执行的第一个函数,当这个函数返回时,程序也将终止,并且这个函数的返回值被看成是程序成功或失败的标志,如果在到达main函数体的末尾时没有遇到返回语句 ,它就被看看成是执行了return 0: 语句.         C的设计原则是把函数作为程序的构成模块.main()函数称之为主函数,一个C程序总是从main()函数开始执行的         在最新的C99中,main函数只有两种标准形式:…
[1]main函数 [2]main() 经典的C风格函数头,如下: main() 在C语言中,省略返回类型相当于说函数的类型为int. 但是,需要明确,C++逐步淘汰了这种用法. 另外,在C语言中,让括号空着意味着对是否接受参数保持沉默. [3]int main() 和 int main(void) 在C++中,让括号空着与在括号中使用void等效. 在括号中使用关键字void明确指出,函数不接受任何参数. [4]void main() 有些程序员使用void main()这样的函数头,并省略返…