• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言:从CodeBlocks到MicrosoftVisualStudio2017

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

  开学到现在寒假,学习了一个学期的C语言,同时也已然用了大半年的 CodeBlocks 来写 C/C++ 程序。CodeBlocks 是写 C/C++ 语言的程序最轻量的IDE(集成开发环境),在 C 语言IDE中名声也是不小的,整个体积包括编译器 GNU 才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

  好,完成以上步骤后。看到起始页,有点慌。CodeBlocks 下可以直接打开源文件对其进行编译,或者是新建.c源文件,其实可以用新建 Console Application 在 Sources 下的 main.c 来写C代码。而 Microsoft Visual Studio 2017也就是这样来玩的,文件>新建项目 在左侧已安装列表中可能看到之前安装的 Winodws 通用平台下的 Visual C++ > Windows 桌面 对应右侧选择 Windows 控制台应用程序(ConsoleApplication 也就是命令提示符窗口 图标也是一个命令提示符窗口的样式 C:\ ) 选择后在下方设置好名称、位置、解决方案名称等就可能确定新建了。

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

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

#include "stdafx.h"


int main()
{
  
return 0; }

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


 

是否忘记添加 #include 名称对源?

 

 

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

 

  • 若要设置此编译器选项,请按照下列步骤:

    1. 在项目的解决方案资源管理器窗格中,右键单击项目名称,然后单击属性

    2. 在左窗格中,单击C/c + +文件夹。

    3. 单击预编译标头节点。

    4. 在右窗格中,单击创建/使用预编译标头,然后单击不使用预编译头

  • (此标头文件指定为通过文件创建/使用 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 actual warning message is specified by the deprecation modifier or attribute at the site of the declaration.

 

Follow the links or read on for ways to fix the issue or to turn the warning off.

 

 

Cause

 

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

 

Many deprecation messages include a suggested replacement for the deprecated function or global variable.

 

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

 

You can also turn the warning off within a file by using the warning pragma, #pragma warning(disable : 4996).

 

You can turn the warning off globally in command line builds by using the /wd4996 command line option.

 

To turn off the warning for an entire project in the Visual Studio IDE:

 

  • Property Pages.
  • Select the Configuration Properties, C/C++, Advanced page.
  • Choose OK to apply your changes.

 

These macros are described below.

 

To define a preprocessor macro in Visual Studio:

 

  • Property Pages.
  • Expand Configuration Properties > C/C++ > Preprocessor.
  • Choose OK to save, and then rebuild your project.

 

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,这字体配上主题感觉很舒服。

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

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

  当然像

  for(i = 0; i < 5; i++)

    scanf("%d", num[i]);

  这样数组前没有带取地址符却没有提示了。。

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

  在 CodeBlocks 中默认不支持 C99 的语法标准,如 for(int i = 0; i < n ; i++) 编译时会提示错误,解决方法就是在 Settings > Compiler Settings > Global compiler settings > Compiler settings > Other compiler ooptions 下的文本框中写入 -std=c99 然后 OK 在弹出的窗口也点击 OK,这样后在 CodeBlocks 编译有 C99 标准的语句时就不会出错了,如 for(int i = 0; i < 3; i++)。当然使用 Microsoft Visual Studio 2017 编译就不用这样了,直接编译就可以了。

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

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

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#属性和字段发布时间:2022-07-14
下一篇:
C#Webform控件发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap