纯C写Windows程序系列---------VS2010设置纯C环境

0 由来

最近看了《C语言也能干大事》的视频教学,又激发起了写纯C程序的兴趣。视频中的开发环境是Visual C++6.0,还有一个版本是CFree,而这些开发环境不是过于陈旧就是非主流,所以打算在Visual Studio 2010上开始我的纯C之旅。

 

目前软件开发分工已经非常细化了,各个领域的开发语言很专一,不可能用一种语言开发所有领域的软件,即使勉强能这样做,那么效率也相当底下。本人认为目前的语言分工如下:

(1)大中型B/S程序,前端是javascript,后端是.net 或 java,php。

(2)控制型B/S程序,如各种嵌入式设备的操作界面,前端也是javascript,后端为php,perl,以及纯C。

(3)Window桌面程序,C++ + MFC类库,或者.net。目前看来MFC前景不妙,使用上远没有.net 类库方便干净。

(4)操作系统驱动程序以及功能模块,嵌入式系统底层开发,汇编语言以及纯C。

(5)病毒木马以及反黑程序,一般为纯C或者C++程序。

个人感觉,如果不是做嵌入式或者系统底层开发,纯C在职业要求上需要不多了,对于上层开发人员,学习纯C的目的在于:

(1)纯C带来的“纯”感觉,简单正统的感觉;

(2)纯C的环境,对于理解各个OS的内部原理至关重要,对于Windows,各种类库把Windows API封装的太深了,更多的语言特性遮盖住了Windows系统内在的最本质的东西;

 

1 基本步骤

 

(1)新建项目,选择Visual C++----Win32---Win32项目。

(2)此时生成的源文件目录下有两个.cpp文件,将它们改名为.c文件。

(3)右键项目名---属性---配置属性----C/C++----高级---编译为:“编译为C代码"。

 

此时编译程序会报错:

错误 2 error C2275: “HACCEL”: 将此类型用作表达式非法 

 

出错代码为:

 

 UNREFERENCED_PARAMETER(hPrevInstance);
 UNREFERENCED_PARAMETER(lpCmdLine);
 MSG msg;
 HACCEL hAccelTable;

 

把后两行移动到前面即可,修改后如下:

 

MSG msg;
HACCEL hAccelTable;

UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

 

2 注意事项

从C++到C要注意几个区别

(1)C中变量定义必须位于代码块开头,这就是为什么上面讲到的报错的原因;C++只要求变量在使用前声明即可,不必放到最前面。

(2)C中结构体变量定义,不能省略struct关键字,如

struct MyStruct

{

       int x;

}

 

MyStruct a;

 

上述代码在C++中编译正常,而在C中无法编译通过,必须修改为

 

struct MyStruct a;

你可能感兴趣的:(纯C写Windows程序系列---------VS2010设置纯C环境)