c 无法打开dos窗口口编译c++不严格?

运用Visual&C++2008&编程运行后DOS输出窗口一闪而过的解决方法(转)
运用Visual C++2008
编程,在编译成功后进行调试的时候,经常会遇到DOS输出窗口一闪而过情况,让人根本来不及看清楚输出的内容是否是自己想利用程序实现的。
遇到这种情况,一般有以下两种解决方案:
1. 若是不需要从键盘输入数据,即主函数中没有语句"cin&&...;",则:
保证在主函数前有语句"#include"且编译成功的情况下,在语句"return 0;"上一行加上语句"getchar();"
,然后按"Ctrl+Alt+F7”重新编译生成,再按"F5"调试就能看见DOS输出窗口;
2. 若是需要从键盘输入数据,即主函数中有语句"cin&&...;",则:
保证在主函数前有语句"#include"且编译成功的情况下,在语句"return
0;"上一行加上语句"system("pause");"
,然后按"Ctrl+Alt+F7”重新编译生成,再按"F5"调试就能看见DOS输出窗口。
注:其实,在语句"return 0;"上一行加上语句"system("pause");"
,就能解决这种问题。但是,这种方法有个缺点:用语句"system("pause");"
后,DOS输出窗口最后提示“请按任意键继续...”,一按键DOS窗口就消失;而用语句"getchar();"
就不存在这个问题。这也是我把这两种方法分开说明的原因。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。,如何样才能不让程序出现DOS界面 - C++当前位置:& &&&,如何样才能不让程序出现DOS界面,如何样才能不让程序出现DOS界面&&网友分享于:&&浏览:97次请教大家,怎么样才能不让程序出现DOS界面我有一个c++写的程序,没有输出显示任何东西,通常这类可执行文件,点击执行后,会闪现一个DOS界面。我现在不想让任何东西闪现,怎么样设置,或者怎么样实现,请大家帮助~
谢谢~~------解决方案--------------------你创建一个Windows工程就可以了。
------解决方案--------------------学习ing
------解决方案--------------------
comment(linker,
&/subsystem:\&windows\&
/entry:\&mainCRTStartup\&&
------解决方案--------------------3 楼真是人才啊学习了
------解决方案--------------------学习了
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有一 见识编译期的力量
#include "stdafx.h"
#include &iostream&
virtual void f(){ cout && "A" && }
class B :public A
void f(){ cout && "B" && }
int _tmain(int argc, _TCHAR* argv[])
A *pA = new B();
出现了很有趣的结果,在main函数中,访问到了B类中的私有方法。为什么会出现这样的结果呢?
一般来说外部对象访问类的私有成员,除非是友元,否则在编译的时候就会报错,但是上面那段代码却可以正常的编译通过。
C++因为支持面向对象编程,制订了一系列实现策略的语言机制。其中,各种各样的&限制&主要是出现在编译时:因此如果直接B d.f();&就会导致编译错误:编译器发现&&
B::f()是B类的私有成员函数,因此拒绝这样的访问。
这里我们可以区分类和对象:类是编译期的概念,也是&访问权限&、&成员数据&、&成员函数&这几个概念的&作用域&。而对象的作用域是运行期。它包括类的实例、引用和指针。&&
&&A&&& *pA&&& =&&& new&&& B();&&&&& 这里&&& pA&&& 是一个&&& A* , 所以就作为一个A类的指针参与了编译;
因此从pA调用f()在编译器眼中,就是调用了A类的公开成员函数f()因此通过编译;然后在运行时,由于多态作用pA调用的f()是派生类的f()成员函数。
虽然这时f()是private成员函数,但是由于&&& private/public&&& 这些访问控制是编译时的限制,在运行时无效,所以B::f() 被成功调用。
如果能够理解这两个在不同时间作用的概念,这个问题就很好理解.
本文来自CSDN博客,转载请标明出处:
2 上面的例子是转载的,里面有个例子是输出调试信息的,
const bool g_debug=1
void Log(char* str) { &&
& if (g_debug){ &&&&&
printf(str);
2) #define DEBUG
#ifdef DEBUG
#define LOG(m) \
printf(m);
#define LOG(m)
有经验的程序员肯定一眼就看出来第二种Log输出方式比较好。第一种的判断是在运行期,而第二种的判断是在编译期。第一种在每次运行log函数的时候都会去判断全局变量,
而第二种是在编译的时候就已经将不需要的Log信息定义为空。因为编译消耗的时间是一次性的,而运行的效率是直接呈现给用户的。由这种节约时间的方法,
我们可以发现把很多函数的判断和计算放在编译期,会大大节约运行的时间,提供运行效率,但是编译器并不是万能,所以编译期能做的工作还是十分的有限。
二 编译期 运行期 说明
1. 编译期是指把你的源程序交给编译器编译的过程,最终目的是得到obj文件,链接后生成可执行文件。 运行期指的是你将可执行文件交给操作系统(输入文件名,回车)执行、直到程序执行结束的期
执行的目的是为了实现程序的功能 2. 编译期分配内存,就是用静态或全局数组。这是在编译的时候确定的。
编译期内存错误,就是比如某个数据段DATA段或者CODE段等等,超过跑这个程序的目标机的存储器的限制。比如DOS下,DATA段不能超过64K吧。
运行期分配内存,就是用malloc()之类的函数,在堆上分配内存。&&& 运行期内存错误,就是运行的时候发生的,比如申请不到内存,内存越界访问,等等。
除了内存外,编译器还做了宏替换,检查类型安全,上面一说的,类的&访问权限&、&成员数据&、&成员函数&这几个概念的&作用域&等等的语法检查,其他的我就不知道了。
三 编译期执行的效率
编译期,把每一步操作结果的值都给缓存下来了,效率当然高了,我们使用相同的缓存策略也可以缩短函数的运行时间。
运行期执行的函数则没有这个优点,它和普通的函数没有区别,不同点在于它在编译的时候运行。把编译器看成一种动态语言运行环境,那么编译&编译期执行的函数&的过程就像是运行动态语言程序的过程。
如果程序中存在大量编译期执行函数,可能极大地降低编译效率,对于它的使用应该尽量避免。
模板提供的是一种声明式语法,在复杂的静态执行逻辑面前有时候会显得力不从心,编译期执行函数在解决这个问题的同时,却带来了上面这种副作用。
如果能把两者的优点结合起来用函数的语法来写程序,由编译器生成优化的模板代码,这种编译期执行才可以大量使用。
同样,可以写个梯乘的函数,求10000,在编译器和运行期,各写一个例子看看运行结果。就知道编译期做运算的好坏。
四 模板的运用 1 stl 模板是在编译期运行的,所以程序中尽量用stl,除了安全性与规范性好外,stl的一些操作都在编译时执行。
2 ATL ATL 跟com有个区别就是用了模板来取代com的虚拟表。ATL用了大量模板,很多操作都在编译时执行了, 所以编出来的可执行文件,比较小。这个是我自己猜的。
3 泛型编程语言,C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。这个东西比较难,暂时没详细了解。一个不错 的例子:
阅读(...) 评论()}

我要回帖

更多关于 dos下编译c 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信