C语言: 从 CodeBlocks 到 Microsoft Visual Studio 2017

  开学到现在寒假,学习了一个学期的C语言,同时也已然用了大半年的 CodeBlocks 来写 C/C++ 程序。CodeBlocks 是写 C/C++ 语言的程序最轻量的IDE(集成开发环境),在 C 语言IDE中名声也是不小的,整个体积包括编译器 GUN 才70-80MB。笔者软件专业教学所用的就是这个 CodeBlocks IDE,与之同样有着轻量能级、名气的 C/C++ 的IDE是 Dev C++ ,它为 CCF (China Computer Federation)中国计算机学会考试等级比赛指定IDE。我也是用过一下的,主要鉴于平时学习一直使用 CodeBlocks ,还有 Dev C++ 的交互界面不是很棒,有点掉档次。

  用习惯了 CodeBlocks 就来尝尝鲜,玩起了 Microsoft Visual Studio 2017,本文就以个人体验从 CodeBlocks 到 Microsoft Visual Studio 2017的小经历来讲述。Microsoft Visual Studio 微软出品,听说在自家的桌面级系统 Windows 下算是精品之作。

  且不评价,来看看 Microsoft Visual Studio吧。上 Visual Studio IDE 官网通过链接下载好 Microsoft Visual Stdio ,看到简介 “丰富的IDE 高级调试” 很牛逼嘛。下载打开发现正如网上所说用它来写 C 实在是小儿科了,这么多东西对于新手来说真的有点无从下手呀,所以C语言新手还是推荐 CodeBlocks 、Dev C++等这些轻量级的IDE,还有 VC 6.0 就不要用这个东西了,用来过过二级就好。

  在 Microsoft Visual Studio 安装的工作负载列表中看到



    Windows 栏下:通用Windows平台开发、使用C++的桌面开发、.net桌面开发

    Web 和 云 栏下:ASP.NET和Web开发、Python开发、Azure开发、Node.js开发、Office/SharePoint开发、数据存储和处理、数据科学和分析应用程序

    移动与游戏 栏下:使用.NET的移动开发、使用 Unity 的游戏开发、使用JavaScript的移动开发、使用C++的移动开发

    其他工具集 栏下:Visual Stdio 扩展开发、使用C++的Linux开发、.NET Core跨平台开发



  同时在单个组件的列表中,可以看到许多的组件可自选。语言列表中可以看到支持 波兰语、朝鲜语、德语、俄语、法语、捷克语、葡萄牙语、日语、土耳其语、西班牙语、意大利语、英语、中文(简体)、中文(繁体) 这14种语言

  功能众多的,用来写C真的是大材小用了。不过既然可以用来写C妨来试试,在工作负载列表中选择Windows栏下的通用Windows 平台开发安装就算是可能写C项目了(不然一个都选择,安装好了就像是个框框没有什么内容),勾选此项之后可以看到右下角的总安装大小达到了14G 左右!这安装盘的剩余空间没个20G怕是没法安装咯,而且目前才勾选了这一项,要全部勾选那可得准备50G的磁盘空间哟~这里笔者只是写写C就勾选安装这个14G左右的通用Windows平台开发就好了,接下来就是慢慢等咯,大概也就不到一个小时吧。

  安装好了,开始运行就要求登录微软账户,没有可以去注册。还有此软件可不是免费产品,需要密钥激活许可证。在菜单 帮助 > 注册产品,输入对应版本的密钥进行注册,以下仅给出了 Visual Studio 2017 企业版和专业版的密钥,其它版本请自行百度啦。

Visual Studio 2017(VS2017) 企业版 Enterprise 注册码 key:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

Visual Studio 2017(VS2017) 专业版 Professional 激活码 key:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH

  好,完成以上步骤后。看到起始页,有点慌,通过百度知道,文件>新建项目 在左侧已安装列表中可能看到之前安装的 Winodws 通用平台下的 Visual C++ > Windows 桌面 对应右侧选择 Windows 控制台应用程序(也就是命令提示符窗口 图标也是一个命令提示符窗口的样式 C:\ ) 选择后在下方设置好名称、位置、解决方案名称等就可能确定新建了。

  新建后的的.cpp文件中默认内容为(虽说.cpp是C++源文件的后缀,不过可以用来写C的,当然可以在后续建立好项目的右侧中的 解决方案资源管理器 的方案中源文件的修改和方案名相同的.cpp文件后缀名为 .c )

// C Test.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"

int main()
{  return 0;
}

   这个头文件 stdafx.h 是啥? 它被称之为 预编译头 ,如果不写入此头文件会出现 C1010 错误,在点击带有下划线链接的错误代码可以转到网页的详情页,此页面描述了错误原因及如何关闭该错误。



查找预编译头时意外的文件尾。 是否忘记添加 #include 名称对源?

使用指定的包含文件/Yu源文件中未列出。 默认情况下,在大多数 Visual c + + 项目类型中启用了此选项,并且"stdafx.h"默认值包括此选项指定的文件。

在 Visual Studio 环境中,使用以下方法之一来解决此错误:

  • 如果你的项目中不使用预编译标头,设置创建/使用预编译标头属性源文件复制到不使用预编译头。 若要设置此编译器选项,请按照下列步骤:

    1. 在项目的解决方案资源管理器窗格中,右键单击项目名称,然后单击属性
    2. 在左窗格中,单击C/c + +文件夹。
    3. 单击预编译标头节点。
    4. 在右窗格中,单击创建/使用预编译标头,然后单击不使用预编译头
  • 请确保不要意外删除、 重命名或删除了标头文件 (默认情况下,stdafx.h) 从当前项目。 此文件还需要在你使用的源文件中的任何其他代码之前包含#include"stdafx.h"。 (此标头文件指定为通过文件创建/使用 PCH项目属


  这样设置后,就可以不用再添加头文件 stdafx.h 了。来写个 Hello World 吧!

#include<stdio.h>
int main(void)
{
    printf("Hello World.\n");
}

  选择好菜单栏下方 解决方案配置 Debug/Release (关于两者区别) 解决方案平台 x86/x64 (两者区别) 然后点击 本地Windows调试器,就运行了。

  一闪而过,对此也很正常,程序执行完成就退出啦。这就和 CodeBlocks 就不同了,CodeBlocks 通过处理程序运行完成后会暂停。而 Microsoft Visual Studio 2017 则不同执行完成直接退出了,这就是为啥一闪而过。对此,



   可以在printf();语句后加上 system("pause"); 当然要记得加上头文件 stdlib.h

  也可以在printf();语句后加上 getchar();

  还可以在 调试 菜单中选择 开始执行(不调试),也可以按 Ctrl + F5

  或者我们可以在printf();下一行添加断点,将光标移动到printf();的下一行右键 断点>插入断点,当然可以在行号之前的竖栏中点击这样就可以快速在当前行添加断点



  以上方法根据自身情况去使用。

  还没完呢,当你使用 scanf 这个标准输入函数时会报错 C4996

  scanf() 错误    C4996    ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 
  关于此错误点击错误代码可以打开网页查看详情及解决方案:



编译器遇到弃用声明。The compiler encountered a deprecated declaration. 此警告始终是故意消息从库或附带的头文件,不应在不了解后果的情况下使用不推荐使用的符号的作者。This warning is always a deliberate message from the author of the library or included header file that you should not use the deprecated symbol without understanding the consequences. 由弃用修饰符或在声明的站点的属性指定实际的警告消息。The actual warning message is specified by the deprecation modifier or attribute at the site of the declaration.

这些是生成的 C 运行库和标准库,但不是一个详尽的列表的一些常见 C4996 消息。These are some common C4996 messages generated by the C Runtime Library and the Standard Library, but not an exhaustive list. 访问下列链接或阅读以获取的方法可以解决此问题,或者若要关闭该警告。Follow the links or read on for ways to fix the issue or to turn the warning off.

  • 此项的 POSIX 名称已弃用。请改用 ISO C 和 c + + 一致的名称: new_name。请参阅联机帮助了解详细信息。The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: new_name. See online help for details.
  • 此函数或变量可能不安全。请考虑使用safe_version相反。若要禁用弃用,请使用_CRT_SECURE_否_警告。请参阅联机帮助了解详细信息。This function or variable may be unsafe. Consider using safe_version instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  • std::function_name::_未选中_迭代器::_Deprecate 调用 std::function_name具有参数,参数可能不安全的此调用依赖于调用方检查传递的值正确。若要禁用此警告,请使用 -D_SCL_SECURE_NO_WARNINGS。有关如何使用 Visual c + + 检查迭代器,请参阅文档‘std::function_name::_Unchecked_iterators::_Deprecate‘ Call to std::function_namewith parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ ‘Checked Iterators‘
  • 此函数或变量已被较新的库或操作系统功能取代。请考虑使用new_item相反。请参阅联机帮助了解详细信息。This function or variable has been superceded by newer library or operating system functionality. Consider using new_item instead. See online help for details.

原因Cause

当编译器遇到函数或被标记为的变量,则会发生 C4996弃用使用__declspec(deprecated)修饰符,或当你尝试访问函数、 类成员或具有 C + + 14 的 typedef [[弃用]]属性。C4996 occurs when the compiler encounters a function or variable that is marked as deprecated by using a __declspec(deprecated) modifier, or when you attempt to access a function, class member or typedef that has the C++14 [[deprecated]] attribute. 你可以使用__declspec(deprecated)修饰符或[[deprecated]]属性自己库或标头文件来警告你有关已弃用的函数、 变量、 成员或 typedef 的客户端中。You can use the __declspec(deprecated) modifier or [[deprecated]] attribute yourself in your libraries or header files to warn your clients about deprecated functions, variables, members, or typedefs.

备注Remarks

许多函数、 成员函数,模板函数和 Visual Studio 中的库中的全局变量标记为弃用。Many functions, member functions, template functions, and global variables in the libraries in Visual Studio are marked as deprecated. 这些函数被弃用,因为它们可能具有不同的首选的名称,可能不安全或具有更加安全的变体,或可能已过时。These functions are deprecated because they may have a different preferred name, may be insecure or have a more secure variant, or may be obsolete. 许多弃用消息包括不推荐使用的函数或全局变量的建议的替换。Many deprecation messages include a suggested replacement for the deprecated function or global variable.

若要解决此问题,我们通常建议你更改代码以改为使用建议的更安全的或更新函数和全局变量。To fix this issue, we usually recommend you change your code to use the suggested safer or updated functions and global variables instead. 如果你需要使用现有的函数或变量,可移植性原因,可以关闭该警告。If you need to use the existing functions or variables for portability reasons, the warning can be turned off.

若要将关闭的警告,而无需解决的问题To turn the warning off without fixing the issue

你可以通过将关闭的警告的代码的特定行警告杂注, #pragma warning(suppress : 4996)。You can turn off the warning for a specific line of code by using the warning pragma, #pragma warning(suppress : 4996). 你还可以启用警告文件中使用警告杂注, #pragma warning(disable : 4996)。You can also turn the warning off within a file by using the warning pragma, #pragma warning(disable : 4996).

你可以关闭该警告全局在命令行版本中使用/wd4996命令行选项。You can turn the warning off globally in command line builds by using the /wd4996 command line option.

若要关闭的警告的 Visual Studio IDE 中的整个项目:To turn off the warning for an entire project in the Visual Studio IDE:

  • 打开属性页对话框为你的项目。Open the Property Pages dialog for your project. 有关如何使用属性页对话框的信息,请参阅属性页。For information on how to use the Property Pages dialog, see Property Pages.
  • 选择配置属性C/c + +高级页。Select the Configuration Properties, C/C++, Advanced page.
  • 编辑禁用特定警告属性来添加4996。Edit the Disable Specific Warnings property to add 4996. 选择确定要应用所做的更改。Choose OK to apply your changes.

你可以使用预处理器宏关闭弃用警告在库中使用的某些特定的类。You can also use preprocessor macros to turn off certain specific classes of deprecation warnings used in the libraries. 下面介绍了这些宏。These macros are described below.

若要在 Visual Studio 中定义预处理器宏:To define a preprocessor macro in Visual Studio:

  • 打开属性页对话框为你的项目。Open the Property Pages dialog for your project. 有关如何使用属性页对话框的信息,请参阅属性页。For information on how to use the Property Pages dialog, see Property Pages.
  • 展开配置属性 > C/c + + > 预处理器。Expand Configuration Properties > C/C++ > Preprocessor.
  • 预处理器定义属性,添加宏名称。In the Preprocessor Definitions property, add the macro name. 选择“确定” 进行保存,然后重新生成项目。Choose OK to save, and then rebuild your project.

若要仅在特定源文件中定义的宏,请添加行如#define EXAMPLE_MACRO_NAME包含的头文件的任意行之前。To define a macro only in specific source files, add a line such as #define EXAMPLE_MACRO_NAME before any line that includes a header file.



  在 项目>属性>配置属性>C/C++>高级 选项右侧中的 禁用特定警告 后方的文本框中添加 4996,再次F5就可以运行啦。

 还有,笔者在使用 gets 此函数时报错,这是因为 Microsoft Visual Studio 中 gets 被更安全的 gets_s 或 fgets 函数代替了,那根据实际选用 gets_s 和 fgets 函数啦。

  gets_s()出现开始于C语言的C11标准,是原gets()的安全版本。gets()不进行数组范围检查,也就是说,你定义一个长度为n的数组,你可以使用gets()读入长度大于n的字符串,编译可能不会出错,但运行时就会出现数组越界或内存泄露的错误。而gets_s()需指明待读字符串的长度参数,防止数组越界。

  最后一个笔者遇到的一个小问题,就是当执行无限循环的语句时,CodeBlocks 直接关闭窗口或按 Ctrl + C 终止,在 Microsfot Visual Studio 2017 中也可以通过关闭命令提示符窗口直接终止运行,也可通过 Ctrl + C 终止,不过呢,这样会报错:

   0x74C312B5 (KernelBase.dll)处(位于 ConsoleApplication1.exe 中)引发的异常: 0x40010005: Control-C

  在弹出的 已引发异常窗口 的异常设置下 引发此异常类型时中断 下 从以下位置引发时除外 下 KernelBase.dll 选上勾就行了,或者在 调试>窗口>异常设置 (Ctrl + Alt + E) 下的 Win32 Exceptions 项下的 0x40010005 选定右键 编辑条件 模块名 不等于 KernelBase.dll 就 Ok 了

  现在大概是可以好好写 C 了吧,用之前可以在 CodeBlocks 上运行的 C 代码在此中运行没什么问题吧。当然笔者也不保证,毕竟可能有些情况没有遇到呀。用 Microsoft Visual Studio 2017来撸 C 代码,听起来很有意思。与 Dev C++ 、 CodeBlocks 比起来,交互界面还行,在 工具>选项>环境>常规>视觉体验中有 蓝色、浅色和深色三种主题供选择。字体笔者就喜欢 Mac OS 的字体 SF Mono 和 Ubuntu 系统字体 Ubuntu Mono,这字体配上主题感觉很舒服。

  笔者拿来撸了下码,对其感觉很好。

  比如在 CodeBlocks 中整形变量没有取地址符 & 编译时不会报错,然而在输入数值进行赋值时就出错停止。而在 Microsoft Visual Studio 2017 则在你运行检查出来然后就报错,这样就避免了在输入好了数值回车时突然出错停止的尴尬情况;

  同样的对一个字符类型变量如果没有指定其大小, Microsoft Visual Studio 2017 也会在运行前检查并报错,不像 CodeBlocks 当执行运用该变量时才出错停止。

  对于未使用的定义变量,Microsoft Visual Studio 2017 也会提示

  当然还有许多笔者没有发现的功能和未知的错误,如 Ctrl + K +D 格式化全部代码等等,不过经过以上设置后,想写个 C 代码是没有什么问题了,就笔者目前所能写的范围而言。

  本文文笔有点乱,如有错请指出,如有遗漏也请补充。

原文地址:https://www.cnblogs.com/notfound/p/8437104.html

时间: 2024-09-30 00:52:39

C语言: 从 CodeBlocks 到 Microsoft Visual Studio 2017的相关文章

VS2017 winform 打包 安装(使用 Microsoft Visual Studio 2017 Installer Project)

Microsoft Visual Studio 2017 Installer Projects SkyRiN发表于Coding+订阅 253 助力数字生态,云产品优惠大促 腾讯云促销,1核1G 99元/1年,2核4G 1200元/3年 立即抢购 在这篇文章中: 1.安装插件 2.添加 Setup 解决方案 3.配置安装项目 设置Setup 桌面快捷方式 开始菜单快捷方式 设置快捷方式Icon 生成安装文件.msi 这是一个易于发布 VS 项目的官方插件,以下是简要使用介绍. 1.安装插件 VS

Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo

目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤,扛不住了,就把我的Mac放在公司. Mac之前为了运行VS,还买了一个PD虚拟机... 现在,我终于喝到鸡汤了——随着Visual Studio 2017的发布,for Mac的版本也诞生了. 下载地址大家可以去visualstudio官网下载,不过可能会有点儿慢,我上传了百度云.文章最后提供下载

Visual Studio 2017 发布

https://www.visualstudio.com/zh-cn/news/releasenotes/vs2017-relnotes 发布日期:2017 年 3 月 7 日 摘要 开发:快速导航.编写并修复代码 新的安装体验 - 降低了最小内存需求量以实现更快.更定制化的安装,并且支持脱机安装. Visual Studio IDE - 大幅改进了 Visual Studio 2017,包括减少启动和解决方案加载时间.改进登录和标识.改进代码导航以及增添打开文件视图和链接的服务,实现了应用和任

Visual Studio 2017 for Mac Preview

Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo 目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4. ASP.NET MVC 5. 软件下载 6. 结尾 0. 前言: 工作原因,上下班背着我的雷神,一个月瘦了10斤,扛不住了,就把我的Mac放在公司. Mac之前为了运行VS,还买了一个PD虚拟机... 现在,我终于喝到鸡汤了--随着Visual Studio 2017的发布,for Mac的版本

Visual Studio 2017 添加引用报错

最近安装了VS2017,在开发时需要添加引用,于是像原来使用vs2012那样直接右键,添加引用,结果弹出一个错误提示"未能完成操作.不支持此接口".真真是见了鬼了...... google.度娘一顿搜,结果根本就没有这个错误信息的任何消息,倒是有很多同样问题描述的案例,不过他们的提示都是"未能正确加载ReferenceManagerPackage包".因此估计跟我的是同一问题(不明白我的提示语怎会如此奇葩),遂按照解决方法试了一下 1.打开 Developer Co

Visual Studio 2017 调试器的工作进程(msvsmon.exe)意外退出 调试将终止

原文:Visual Studio 2017 调试器的工作进程(msvsmon.exe)意外退出 调试将终止 开发环境: Windows 10 in Parallels Desktop Visual Studio 15.6 场景还原: 使用 Visual Studio 15.6 (即 Visual Studio 2017) 新建 ASP.NET Core MVC 项目,启动调试,提示: 调试器的工作进程(msvsmon.exe)意外退出.调试将终止 其实这个问题曾经多次遇到过,但是都没做记录,导致

Visual Studio 2017启动时 plugin.vs.js 报错:缺少标识符、字符串或数字

最近安装了一个最新版Visual Studio 2017 15.7.2可是启动调试程序时总是提示如下错误: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PrivateAssemblies/plugin.vs.js 行:1074Char:13错误:缺少标识符.字符串或数字代码:0 解决方法: 选择 调试-> 选项 不选中"调试时启动诊断工具" 点击确定. 原文地址:http:/

Microsoft Visual Studio 2015 下载、注册、安装过程、功能列表、问题解决

PS:请看看回复.可能会有文章里没有提到的问题.也许会对你有帮助哦~ VS2015正式版出了,虽然没有Ultimate旗舰版,不过也是好激动的说.哈哈.可能有的小伙伴,由于工作环境不允许.或者害怕有什么问题.所以不敢安装vs2015.只能眼巴巴地干瞅着. 因此,我决定,冒一次重装系统的风险,试着安装一下,正好也试试什么序列号能用.希望这次牺牲能值得~~呵呵. 下载地址:Microsoft Visual Studio 2015 全版本+离线MSDN+全部插件 赶紧下载,打开,发现VS2015对安装

Microsoft Visual Studio International Pack 1.0 SR1--关于汉字转拼音

Microsoft Visual Studio International Pack 1.0 SR1————微软的一个类库 地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=15251 Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持.使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用.SR1 包含对 Ja