Visual C++是什么?!

visual c++操作手册 ”框中会出现上面建立的工程的路径如“C:\myc\helloc”,同时要左边的“C++ Sourse Files”(图1.5),单击“确定”按钮,在“C:\myc\helloc”下就新建了文件hello.c,并显示编辑窗口和信息窗口(图1.6)。)”框中会出现上面建立的工程的路径如“C:\myc\helloc”,同时要左边的“C++ Sourse Files”(图1.5),单击“确定”按钮,在“C:\myc\helloc”下就新建了文件hello.c,并显示编辑窗口和信息窗口(图1.6)。 阅读详情

 [weizhisheng 原作]


    这个问题很奇怪吗?大概是。不过,当我又看到有人发表诸如“Windows/Office是VC编写的”或者“VC是无所不能的”这种高论,我就禁不住这样问自己。

 

    Visual C++究竟是什么?你平常在其中工作的那个标记着“Microsoft Visual C++”的窗口,真的就代表Visual C++吗?

按照我的理解,Visual C++是一个开发工具包,它大概可以分成三个主要的部分:

 

1. Developer Studio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C++”,所以很多人理所当然的认为,那就是Visual C++了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C++, 它充其量只是Visual C++的一个壳子而已。这一点请切记!

 

2. MFC。从理论上来讲,MFC也不是专用于Visual C++,Borland C++,C++ Builder和Symantec C++同样可以处理MFC。同时,用Visual C++编写代码也并不意味着一定要用MFC,只要愿意,用Visual C++来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C++本来就是为MFC打造的,Visual C++中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C++而不用MFC就等于抛弃了Visual C++中很大的一部分功能。但是,Visual C++也不等于MFC。

 

3. Platform SDK。这才是Visual C++和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C++编译器为核心(不是Visual C++,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,那么这项工作是由谁来完成的呢?是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。


     为什么我会觉得“Windows是用VC开发的”这种说法很奇怪?因为它太含糊了。用VC,可以编写MFC应用,也可以编写纯SDK程序,不论哪一种方式,都不一定是非VC不可。只要乐意,我完全可以用Ultra Edit来写出一个MFC程序,再用CL编译之,没有必要一定动用VC这个大家伙。而且有许多黑客和买不起Visual Studio的人就是这么干的!用SDK编程就更不需要VC了,Down一个Borland C++ Compiler下来,或者用lcc之类的编译器,同样可以达到目的。再说了,Windows可不是一个单纯的产品。用VC来编写Windows外围程序是完全不成问题的,可是操作系统的核心部分呢?就算可以用VC来编写代码,调试怎么办?VC自身的调试器对一般的应用功能是够强大的,可是对于系统级的调试根本无能为力,因为这个调试器本身就是依赖于操作系统的。只有系统级的调试程序如debug,SoftIce和Wdebug这些工具才能完成如此重大的任务。

 

    从历史上来看,Visual C++ 1.0的出现晚于Windows 3.0,而且那时候的MFC只有一个雏形而已,用来开发操作系统根本是不可能的事情。在Visual C++ 1.0的前面倒是有一个Microsoft C/C++ 7.0,但是它整体水平不如Borland C++ 3.1,在扩展内存管理方面的功能又不如Watcom C++ ,所以一直没有占据很大的市场。它现在已经不作为单独的产品,但仍然作为Platform SDK的主要组成部分而存在于Visual Studio产品中,而且其功能比过去也不可同日而语了。到Windows 95问世的时候,MFC仍然在尽力追赶操作系统的功能。应该说Visual C++ 5.0是一个转折点,一方面MFC已经发展比较完善,另一方面,操作系统的基本结构也已经稳定,后面就主要着眼于系统整合与完善作为商务平台的功能。已经稳定的系统不可能再进行翻天覆地的修改,所以,我比较能够接受“Windows系统是用Microsoft C++和MASM作为编译器完成的”这种说法。研究Windows的系统文件可以看出,很多文件显示出来的Linker Version明显是Microsoft C++编译器。至于代码是用什么编写的?我不知道,也不想知道,除了Developer Studio的编辑器之外,任何好的文本编辑器都能够做到这一点。

 

    Visual C++是无所不能的吗?唔,最好也是分开来说。Developer Studio肯定不是—它只是个外壳而已。MFC呢?也不是。一方面它是对API的封装,离开了API它就什么也干不了;另一方面,MFC对API的封装也不够全面,有些时候还是要直接调用API函数才能够“为所欲为”。至于Platform SDK,倒真的可以说它几乎是无所不能的。不过,过分强调这一点并没有太大意义。只要有一套完整的编译器,和必须的支持文件,其他开发工具也可以说是“无所不能”的,比如Borland C++ Compiler或者lcc都可。老实说,我并不喜欢“无所不能”这类字眼。关键在于各人的理解不同。如果我较起真来,说能不能写个VC程序让电脑拿起鼠标砸向我不喜欢的老板,你说它能办得到吗?所谓的“无所不能”究竟有何意义?让我用VC写一个Server,能在普通工作站上支持每秒几千万的访问量,杀了我也办不到,不管VC的优化手段是多么有效。在具体的平台上,在特定的操作系统中,不论多么强大的工具,最终还是要受到平台和系统本身的限制。大家应该知道这个悖论吧:上帝能否制造出一块他自己也举不起来的石头?

 

    我也常常看到“MFC永远不会过时”或者“C++是不会灭亡的”这种发言。我理解发言人的心情,不过这种说法绝不客观。一种语言也好,一个Application Framework也罢,它们之所以有今天的地位,并不是纯粹自然形成的,有许多复杂因素的作用,也有时势造英雄的理由在内,所谓“居高声自远,非是籍秋风”是也。历史的舞台从来不是为某人专设,即使真有所谓万古长青的怪胎,恐怕也正应了那句老话:“众人都死了,只剩咱们两个老妖精,有什么意思!”我们现在使用的语言,不论Basic,Pascal还是C++,甚至如日中天的Java和C#,终究都会有功成身退的一天。这并不是我们的损失,相反,薪尽火传,一种语言中好的,合理的因素,肯定会被后续者所继承和发扬,自然界的新陈代谢本该如此。

 

    天空没有飞翔的痕迹,而飞鸟已经飞过。一种语言只要曾经在历史上留下浓墨重彩的一笔,完成它“为先贤继圣学,为万世开太平”的历史使命(有点夸张),这就够了,何必缠绵不舍作儿女之态!不知道我有生之年会不会看到C++的消亡,如果真有这么一天,我会拍手欢呼,因为这说明已经有了另外一种更新更好的语言来代替它(或许是几种)。不过照我猜想,像C++这种轰动武林惊万教的语言,其灭亡恐怕也不会是悄无声息,而多半属于“始皇既没,余威震于殊俗”那种情况。

 

    最后请允许我发表一点感慨。语言的优劣其实是一个无需讨论的问题,个人的经历和所处环境在很大程度上就决定了你对某种语言的看法,这是很个人的东西。好比碰到一位法国朋友,他多半会自豪的告诉你:法语是世界上最好最优美的语言。对这种说法我会微笑表示赞同,并且欣赏他的民族自豪感,而不会觉得这是对汉语或者英语的贬低—虽然我心底里一直深信,汉语才是世界上最好的语言。当然,如果他对我说“你们那些破烂中文是些什么玩意”,那我可能就是另外一种反应了。

 

    说了这么多,意思无非是想少些无谓的争论罢了。常在论坛上看到“XXX是最好的语言(编译器),XX是什么东西”之类发言。我不想和他们争论,一个人对一样东西既然完全失去了接触和了解的兴趣,那么说什么大概都没有用了。只是觉得遗憾而已。人世间的隔膜与误会,大多是由于彼此不了解而引起,而多少悲剧正是由此而发生呵。在编程的世界里大概不会这么严重,不过言为心声,多少也可看出个人的品行。如果某个人A常在我面前说B的坏话,那么我对B不会有恶感,相反我对A的印象分要减去20。自己不了解的人或者事,不管,不说,也就是了。何至于恶言相加呢。

 

    我参加工作的时间不长,各种各样的软件工程师倒是见过不少。就我看到的情况,程序员实在是很沉默寡言的一类人,平时总是表现的温文尔雅,有时候却难得的能见到他们大发脾气,扔鼠标,砸键盘,捶显示器,干什么的都有(这种情况多半是遇到没有办法除掉的Bug了)。面对亲人和朋友的时候他们有时候会选择长久的沉默,只有坐到机器前面时才会发现他们的痴迷和狂热。虽然普遍的不善言谈,但是他们似乎总能在游戏或者网络中找到发泄的方式。所以我在各种各样的论坛上看到语法错误不忍卒读的文字,看到互相指责乃至于人身攻击的情况,甚至看到许多不雅的词汇,虽然心情无论如何愉快不起来,但是我想我能理解。只是,我仍然感到担心,毕竟程序员这一行干几年就了不起了,而人生还有很长的路要走呢。没有一个健全的心态,没有足够为人处世的技巧,30岁以后的人生该如何把握呢?

Visual Studio 2022 C++ 调用matplotlib-cpp 绘图 利用matplotlib-cpp在Visual Studio 2022中绘图 阅读详情

相关推荐

Visual Studio Code 写 C++ 代码如何禁用编辑错误提示

一、引言最近在学习 C++ Primer 第五版的时候,想要使用 Visual Studio Code 来随书敲一些代码片段。但是很“可恶”的是,默认的 Visual Studio Code 会显示编辑错误提示,比如下图所示:对于我这样的强迫症来说,不能忍!不能忍!坚决不能忍 : (那么,怎么去掉编辑区域中默认的编辑错误提示呢?二、问题解决1. 我们打开文件菜单,点击 首选项,点击设置,进入 set

(ÒωÓױ) 1万+

Microsoft Visual C++简介及其在编程中的作用

你可以使用Visual C++创建一个新的控制台应用程序项目,并将上述代码复制到源文件中,然后构建和运行该项目,即可在控制台中看到输出结果。然而,需要注意的是,如果你使用Visual C++开发的项目依赖于Visual C++运行时库或其他相关组件,删除Visual C++可能会导致项目无法正常运行。在这种情况下,你需要确保你的项目不依赖于Visual C++相关组件,或者在删除之前进行必要的调整和迁移。强大的调试功能:Visual C++提供了全面的调试工具,可以帮助开发人员快速识别和修复代码中的错误。

PixelNinja的博客 5110

学习C++的第一步,环境搭建:Visual Studio的安装和创建C++项目

无论学习任何语言,首先要有编译环境,这里介绍Visual Studio的安装和使用,作为后面C++学习的环境。当然,除了Visual Studio,还有qtcreater、vscode等IDE可以使用,可以根据自己的喜欢安装对应的软件。下面对Visual Studio的安装进行一个详细说明,对具体版本没有限制。

Lion_Long的博客 2万+

C++基础(Visual studio)

C++基础语法

泰勒今天想展开的博客 1万+

安装C++开发环境:Visual Studio、VS Code

获取最新版本的 MinGW-w64,它提供了 GCC、MinGW-w64 和其他有用的 C++ 工具和库的最新本机版本。3、在向导中,选择所需的安装文件夹。大多数情况下,推荐的目录是可以接受的。首次启动Visual Studio时,它将引导你选择开发设置和主题,你可以根据自己的喜好进行选择。点击右上角的三角运行符号,第一次时需要点击搜索框弹出的第一行,往后只需点击运行。7、查看安装路径下的内容,可看到gcc、g++、gdb等工具。下载完成后,双击下载的安装文件,然后按照提示完成安装。

qq_63695366的博客 9790

visual c++.net 2003下如何自定义资源?!

最近在看《windows程序设计》这本书,但是在菜单及其他资源这章中有个例子开始不能正常模拟。这个例子是关于如何使用自定义资源的。但我是在visual c++.net 2003中模拟的。我是选择项目模板中的Win32项目,然后按如下方式添加TEXT自定义资源的.在资源视图的test2.rc单击右键,然后选择导入,选择了一个文本文件.然后再输入TEXT作为它的类型.打开后,可看到文件有载入.打开该资

tspha的专栏----掌握根本、力争创新 847

C++】11 Visual Studio 2019 C++安装matplotlib-cpp绘图

使用C++调用matplotlib-cpp绘图

记录专业模型开发、算法程序设计、软件学习笔记、生活日志。 9332

C++版】visual studio 2019安装教

也勾上,一般这个模块已经很少用了,因为比较老,用Qt软件写可视化项目的比较多。注:想用visual studio写可视化项目的,把右侧的一个。登录visual studio 官网。打开visual studio,选择。如果想要好一点的编程感觉可以点击工具。如果有疑问可以私信我哦!选择字体和颜色,分别对。选择模块,C++选择。

千禧皓月的博客 6万+

使用 Visual Studio C++ 调用 matplotlib-cpp 绘图

最后,使用 show 函数将图表显示出来。在本文中,我们将介绍如何使用 Visual Studio C++ 调用 matplotlib-cpp 库来进行绘图。matplotlib-cpp 是一个基于 Python 的库,可以方便地在 C++ 程序中进行数据可视化。除了折线图,matplotlib-cpp 还支持其他类型的图表,如散点图、柱状图等。接下来,我们创建一个简单的 C++ 程序来调用 matplotlib-cpp 绘制图表。然后,我们就可以使用 matplotlib-cpp 的函数来进行绘图了。

HackQuestR的博客 1096

Visual Studio中编译.c文件和.cpp文件主要有哪些不同

在链接阶段,它会将编译生成的目标文件(.obj)和所需的库文件(如C标准库)进行链接,生成可执行文件。比如在预处理阶段,除了处理C语言的预处理指令外,还会处理C++特有的指令,如#pragma once(一种防止头文件重复包含的机制)。在编译阶段,C++编译器会处理类的定义和对象的创建,包括构造函数和析构函数的调用、成员函数的绑定等。在链接阶段,C++编译器会处理C++特有的名称修饰(name mangling),因为C++允许函数重载,所以编译器会对函数名进行修饰,以区分同名但参数不同的函数。

erfan_lang的博客 4052

visual studio c++单项目中存在多个cpp,怎么单独运行某个cpp

c++单项目中存在多个cpp,怎么单独运行某个cpp

代码的星辰大海 1万+

visual studio c++工程包含多个cpp文件

一个工程当中会使用多个cpp文件,可以将不同的函数放在不同的cpp文件中,但是只能有一个main函数。 1.首先,创立新的.h文件,例如 #ifndef _FUNCDECL_H #define _FUNCDECL_H void addt();//第2步中的函数在此声明 #endif 2.创立.cpp文件,例如 #include<iostream> #include"include/funcdecl.h"//上一步的头文件名称 using namespace std; void add

painice的博客 4618

Visual Studio 2022创建CPP项目

本文介绍了在Visual Studio 2022中创建C++项目的完整步骤:从启动软件、选择语言、设置存储路径到添加源文件并编写示例代码。同时提供了修改编程字体的方法,将默认字体改为Consolas,并附有详细的操作截图和参考链接。整个过程清晰直观,适合初学者快速上手VS2022进行C++开发。

qq_50930131的博客 740

安装 Microsoft Visual C++ Build Tools

安装是为了在windows系统上编译和运行需要C++支持的程序或库(例如某些Python包,Node.js模块等)。

W_chuanqi的博客 4万+

如何在visual studio code中运行cpp文件以及解决中文无法显示的问题

如何在visual studio code中运行cpp文件1、下载和安装vscode2、安装TDM-GCC3、在vscode中安装所需插件4、创建一个文件夹并创建一个cpp文件(注意文件夹以及文件名不能含有中文)如下图所示:功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表F

m0_51323948的博客 9491

Visual Studio 2019 C++环境配置:解决Microsoft.Cpp.x64.user问题

在现代软件开发中,一个稳定高效的开发环境是项目成功的关键之一。对于使用Visual Studio 2019(VS2019)的开发者来说,环境配置问题往往是他们面临的首要挑战。环境配置不仅包括软件本身的安装和设置,还包括开发环境与操作系统间的协同工作,涉及到编译器、链接器、调试器等多个组件。配置不当可能导致编译错误、链接失败甚至运行时异常,这些都可能给开发进度带来不必要的延误。

weixin_33812391的博客 2996

探秘 YAML-CPP:一个强大的C++ YAML解析库

YAML-CPP是一个开源的、用于C++编程语言的YAML解析和生成库。它的目标是提供一个易于使用的API,让开发者能够轻松地将YAML数据集成到他们的C++应用中。项目由Jason Beder开发并维护,其GitHub仓库为:。 ## 技术分析 YAML是一种人类可读的数据序列化语言,常被用于配置文件、数据存储和传输等场景。YAML-CPP提供了两种主要的方式来处理YAML数据: 1. *

gitblog_00035的博客 1196

用llama.cpp实战入门C++:Windows下从编译到CUDA加速

C++是一门强调内存控制与系统交互的编程语言,其核心在于理解编译构建、运行时依赖、指针与RAII等底层机制。llama.cpp作为纯C++实现的轻量级大模型推理框架,以约3万行聚焦代码提供了极佳的学习沙盒——它不抽象、不封装,让std::vector、struct、CMakeLists.txt、Visual C++ Redistributable等概念在真实报错与调试中自然浮现。通过在Windows 11下配置VS2022、编译CLI工具、启用CUDA加速及加载qwen3-embedding模型,学习者可同

weixin_30235225的博客 455
下一篇: 关于Visual Studio .NET 2003 安装时“系统组件不匹配”问题的解决
performance1024
博客等级 码龄20年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值