使用 VC08 编译和运行C语言程序
2014-03-29 14:47
113 查看
第一次写文章。大神勿喷。
一、为什么我会选用VC08而不是VC6或者更新的版本
就目前而言,大部分学校教学过程中使用的是微软于1998年推出的Visual C++ 6.0(下面简称VC6)。VC6 推出的时候,流行的操作系统是Windows 95和Windows 98。而现在(2014年3月),全球范围看,Windows 用户使用最多的是 Windows 7 和 Windows XP。(数据来源于 Net Application)
VC6 在 Windows XP 下使用也会有大量的 Bug,更何况是在 Windows 7 以及 Windows 8 上面使用呢?就我自己在 Windows 7 上使用的经历,只要从VC6 的菜单上打开文件,VC6 就会停止工作(当时的解决方法是把源代码直接拖进 VC6 ),不过这并不影响使用。后来,在不断使用的过程中,发现越来越多的 Bug,例如,编译的时候不知道什么原因,编译器卡住了,然后
VC 也关不了,只能通过任务管理器结束进程的办法来结束程序。
于是我就开始尝试其他的开发工具。我用过 Dev-C++ 和 CodeBlock,也不是说这些工具不好,只是用起来不是很习惯(可能是我不会用)。于是就在网上寻找 VC 的升级版。最先找到的是最新版的 Visual Studio Express 2013。摸着摸着就找到方法,然后编译程序,报错。然后看错误,发现使用 scanf 函数就会报错
![](https://img-blog.csdn.net/20140329003600187?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDQwMzMxNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
具体错误信息为:This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. (该函数或者变量可能不安全,考虑使用 scanf_s 函数代替。使用 _CRT_SECURE_NO_WARNINGS 禁用该信息)
解决方法有两个:一是使用 scan_s 函数,二是把信息禁用。第一种的方法,调用了 scanf_s 函数,后来我把使用了 scanf_s 函数的源码使用 gcc 编译,不能通过。
![](https://img-blog.csdn.net/20140329134642390)
错误信息是:undefined reference to 'scanf_s' (未定义的引用 'scanf_s')。后来在网上找了一下,scanf_s 是微软的函数,只要不在 VC 里面编译就会报错。(不过,scanf_s 函数在 c11 里面已经转正;资料来源(维基百科))
然后我尝试了第二种方法,使用宏定义来禁止这个错误信息。于是代码经过修改如下
![](https://img-blog.csdn.net/20140329141602375)
后来觉得这样写出来的代码在 VC 以为的工具编译会遇到很多麻烦。所以决定找一个旧版本。后来便找到 VC 08 Express。虽然不是开源,但它是免费工具。摸索到编译C语言的方法以后,把刚刚在 VS 2013 里报不安全的代码编译。VS 2013里的错误在 VC 08 里面只是警告。而且 VC 08 用起来速度上比 VS 2013 快很多。于是我就开始用 VC 08。
二、(正文)如何使用VC 08 编译 C 语言程序
前面说了一大堆。现在才是本文的重点。使用过 VC 6 的人都知道,在 VC 6 里面运行 C 语言的程序有多种方法,最简单的,就是直接建一个源文件就可以了。但是,在VC 08 里面只是建立一个源文件,编译菜单的调试是灰色的。也就是说 VC 08 不允许直接编译 C 语言程序。
后来也是度娘+自己摸索,找到方法。VC 08 编译的对象是一个解决方案(相当于 VC 6 中的工程文件),所以,运行之前需要建立一个解决方案。
Step1. 建立空白解决方案
在VC08的菜单中,依次单击:文件 -> 新建 -> 项目。然后会弹出一个新建项目的窗口。
![](https://img-blog.csdn.net/20140329142458140)
在左边的项目类型中,点击常规,然后右边会有一个空项目,选中,然后在下面输入项目的名称,然后点确定,一个空白的解决方案(一个空白的工程文件)就已经建好了。
Step2. 建立一个源码文件
项目创建完成后,VC 08 的主界面如下:
![](https://img-blog.csdn.net/20140329142946375)
用鼠标右键在源文件的文件夹中单击,菜单中选择添加,再点新建项。会弹出一个添加新项的对话框。
![](https://img-blog.csdn.net/20140329143221859)
按图上面的操作之后,点添加,代码文件就已经创建好了。接下来要做的东西写好代码,按 F5 编译运行程序。
三、使用 VC 08 写程序的一些问题
1. 去除烦人的 scanf 警告信息
虽然 VC 08 不会把 scanf 函数的不安全信息视为错误,但是编译的时候仍然会显示相应的警告信息。如果代码编译的时候有错,要在错误列表中不断向下滚动鼠标才能找到错误信息。很明显很那个...
为了解决这个问题。我们可以使用预编译头(关于预编译头的知识,在这里不详细介绍)解决这个问题。只需要在源代码的最前面添加一句
然后编译,是不是发现 scanf 函数不安全的警告信息全部屏蔽掉了?
2. 程序一闪而过。
可能习惯于使用 VC 6,每次程序运行以后都会暂停一下,显示控制台的内容。而 VC 08 则没有这样的设计。解决这个问题的方法有两种。第一种,就是使用 Ctrl + F5 运行程序(这个是只运行,不调试)。第二种,是在 main 函数的尾部通过代码进行暂停程序。(我个人多使用后者)
使用 VC 08 差不多一年,觉得 VC 08 也挺好用了。最近实验课发现自己已经不会用 VC 6 了。至于好用与否,则是根据个人习惯了。
一、为什么我会选用VC08而不是VC6或者更新的版本
就目前而言,大部分学校教学过程中使用的是微软于1998年推出的Visual C++ 6.0(下面简称VC6)。VC6 推出的时候,流行的操作系统是Windows 95和Windows 98。而现在(2014年3月),全球范围看,Windows 用户使用最多的是 Windows 7 和 Windows XP。(数据来源于 Net Application)
VC6 在 Windows XP 下使用也会有大量的 Bug,更何况是在 Windows 7 以及 Windows 8 上面使用呢?就我自己在 Windows 7 上使用的经历,只要从VC6 的菜单上打开文件,VC6 就会停止工作(当时的解决方法是把源代码直接拖进 VC6 ),不过这并不影响使用。后来,在不断使用的过程中,发现越来越多的 Bug,例如,编译的时候不知道什么原因,编译器卡住了,然后
VC 也关不了,只能通过任务管理器结束进程的办法来结束程序。
于是我就开始尝试其他的开发工具。我用过 Dev-C++ 和 CodeBlock,也不是说这些工具不好,只是用起来不是很习惯(可能是我不会用)。于是就在网上寻找 VC 的升级版。最先找到的是最新版的 Visual Studio Express 2013。摸着摸着就找到方法,然后编译程序,报错。然后看错误,发现使用 scanf 函数就会报错
具体错误信息为:This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. (该函数或者变量可能不安全,考虑使用 scanf_s 函数代替。使用 _CRT_SECURE_NO_WARNINGS 禁用该信息)
解决方法有两个:一是使用 scan_s 函数,二是把信息禁用。第一种的方法,调用了 scanf_s 函数,后来我把使用了 scanf_s 函数的源码使用 gcc 编译,不能通过。
#include <stdio.h> int main(void) { int a; scanf_s("%d", &a); printf("%d", a); return 0; }
错误信息是:undefined reference to 'scanf_s' (未定义的引用 'scanf_s')。后来在网上找了一下,scanf_s 是微软的函数,只要不在 VC 里面编译就会报错。(不过,scanf_s 函数在 c11 里面已经转正;资料来源(维基百科))
然后我尝试了第二种方法,使用宏定义来禁止这个错误信息。于是代码经过修改如下
// 这个宏定义一定要在 #include <stdio.h> 前面 // 否则仍然是不能过编译 #define _CRT_SECURE_NO_WARNINGS 0 #include <stdio.h> int main(void) { int a; scanf("%d", &a); printf("%d", a); return 0; }然后按 F7 编译通过了
后来觉得这样写出来的代码在 VC 以为的工具编译会遇到很多麻烦。所以决定找一个旧版本。后来便找到 VC 08 Express。虽然不是开源,但它是免费工具。摸索到编译C语言的方法以后,把刚刚在 VS 2013 里报不安全的代码编译。VS 2013里的错误在 VC 08 里面只是警告。而且 VC 08 用起来速度上比 VS 2013 快很多。于是我就开始用 VC 08。
二、(正文)如何使用VC 08 编译 C 语言程序
前面说了一大堆。现在才是本文的重点。使用过 VC 6 的人都知道,在 VC 6 里面运行 C 语言的程序有多种方法,最简单的,就是直接建一个源文件就可以了。但是,在VC 08 里面只是建立一个源文件,编译菜单的调试是灰色的。也就是说 VC 08 不允许直接编译 C 语言程序。
后来也是度娘+自己摸索,找到方法。VC 08 编译的对象是一个解决方案(相当于 VC 6 中的工程文件),所以,运行之前需要建立一个解决方案。
Step1. 建立空白解决方案
在VC08的菜单中,依次单击:文件 -> 新建 -> 项目。然后会弹出一个新建项目的窗口。
在左边的项目类型中,点击常规,然后右边会有一个空项目,选中,然后在下面输入项目的名称,然后点确定,一个空白的解决方案(一个空白的工程文件)就已经建好了。
Step2. 建立一个源码文件
项目创建完成后,VC 08 的主界面如下:
用鼠标右键在源文件的文件夹中单击,菜单中选择添加,再点新建项。会弹出一个添加新项的对话框。
按图上面的操作之后,点添加,代码文件就已经创建好了。接下来要做的东西写好代码,按 F5 编译运行程序。
三、使用 VC 08 写程序的一些问题
1. 去除烦人的 scanf 警告信息
虽然 VC 08 不会把 scanf 函数的不安全信息视为错误,但是编译的时候仍然会显示相应的警告信息。如果代码编译的时候有错,要在错误列表中不断向下滚动鼠标才能找到错误信息。很明显很那个...
为了解决这个问题。我们可以使用预编译头(关于预编译头的知识,在这里不详细介绍)解决这个问题。只需要在源代码的最前面添加一句
#pragma warning(disable:4996)
然后编译,是不是发现 scanf 函数不安全的警告信息全部屏蔽掉了?
2. 程序一闪而过。
可能习惯于使用 VC 6,每次程序运行以后都会暂停一下,显示控制台的内容。而 VC 08 则没有这样的设计。解决这个问题的方法有两种。第一种,就是使用 Ctrl + F5 运行程序(这个是只运行,不调试)。第二种,是在 main 函数的尾部通过代码进行暂停程序。(我个人多使用后者)
#pragma warning(disable:4996) #include <stdio.h> #include <stdlib.h> int main(void) { int a; scanf("%d", &a); printf("%d", a); // 此句代码就是暂停程序执行 // system() 函数在 stdlib.h 头文件中,使用前请先 include system("pause"); return 0; }程序正常运行。到达 system("pause") 语句,整个程序暂停执行,并输出一句“按任意键继续...”(可能在不同系统中会有不同的输出)
使用 VC 08 差不多一年,觉得 VC 08 也挺好用了。最近实验课发现自己已经不会用 VC 6 了。至于好用与否,则是根据个人习惯了。
相关文章推荐
- 基于Linux系统调用使用php实现一个在线编译运行C语言程序的系统
- 使用Dev C++编译运行一个C语言程序
- 如何使用emacs编写c语言程序,并编译运行
- 如何使用emacs编写c语言程序,并编译运行之
- 如何使用emacs编写c语言程序,并编译运行之
- 如何使用emacs编写c语言程序,并编译运行之
- 使用idea导入非maven项目并编译运行
- Linux 下编译并运行C语言程序
- Ubuntu下使用android模拟器运行自编译出来的android镜像文件
- Windows 下使用 GNUstep 编译并运行 Objective-C 程序
- 使用命令行创建项目,编译,安装运行
- 使用Sublime Text快速编译运行java程序
- Hadoop — 使用Eclipse编译运行MapReduce程序(Hadoop2.6.0)
- 如何使用Java来编译运行C文件(一)
- 命令行使用javac及java编译、运行java程序出现的问题(Windows XP)
- LIBRARY_PATH是编译时候用的,LD_LIBRARY_PATH是程序运行是使用的
- Eclipse中编译和运行时使用的JDK和JRE级别问题(关于"Bad version number in .class file"的异常解决)
- 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.4.1
- 使用Eclipse编译运行MapReduce程序
- 使用OpenCV官方提供文件配置、静态编译并运行OpenCV-2.3.x/2.4.x实例