微软一站式代码规范示例

以下编程规范适用于本地 C++代码。

1.1      编译器选项

1.1.1      预编译头

ý 一定不要使用预编译头。

 

Visual C++ 项目默认使用预编译头文件。 其原理是当生成stdafx.h/cpp文件时,巨大的Windows 头文件只被编译一次。项目中其他任何一个.CPP 文件都需要首先包含  #include "stdafx.h" ,这样项目才能正确生成。当编译器找到 "stdafx.h"时,便知道何时插入预编译头信息。

 

在代码示例中,必须关闭预编译头选项。在您的项目属性中,找到C/C++ 标签页,选择 Precompiled headers 节点。点击 Not using precompiled headers 单选按钮,之后点击 OK。请确保修改了所有的配置(包括Debug配置 Release配置)。之后,移除所有源文件的 #include<stdafx.h>

 

1.2      开启所有警告,并当做错误来对待

þ  您应该 以最高警告等级来编译所有代码。

 

þ 您应该 把警告当做错误来对待。

编译器提示的警告通常对于鉴别低劣的代码和隐晦的bug非常有用。您可以以编译器警告对您的代码进行额外的验证。

 

Visual Studio中,您可以在项目的属性设置页面开启警告等级4 在项目属性设置页面,找到 “Configuration Properties”, “C/C++”, “General” ,将“Warning Level” 设置为 “Level 4”

1.2      文件和结构

1.2.1      stdafx.h, stdafx.cpp, targetver.h

þ 您应该 删除Visual Studio项目模板生成的 stdafx.h, stdafx.cpp targetver.h 文件以保持示例的简洁。 然而,如果您有许多被大量代码文件共享的标准头文件,您可以创建单独的文件来包含它们。这非常类似于Windows.h的作用。

1.2.2      头文件

þ 一定请 在头文件内使用包含保护符(include guards),来防止头文件被无意的多次包含。

 

以下示例代码中的 #ifndef #endif ,应该为头文件的第一行和最后一行代码。示例代码展示了如何在  “CodeExample.h”中使用 “#ifndef/#endif” 作为包含保护符。

 

// File header comment goes first ...

 

#ifndef CODE_EXAMPLE_H_

#define CODE_EXAMPLE_H_

 

class CodeExample

{

    ...

};

 

#endif

 

您也可以使用 “#pragma once” (微软编译器的一个特定拓展) 来替代 “#ifndef/#endif” 包含保护符:

 

// File header comment goes first ...

 

#pragma once

 

class CodeExample

{

    ...

};

 

ý 您不应该在头文件内实现函数。头文件只能包含函数声明和数据结构。它们的实现应置于.cpp 文件。

1.2.3      实现文件

实现文件包含了全局函数,局部函数和类方法实际的函数体。实现文件是拓展名为.c 或者 .cpp的文件。  注意,实现文件不必包含整个模块的完整实现。它可以被分隔,并包含一个公共内部接口。

 

þ 您应该 将不必导出的声明放置在实现文件中。此外,您应该为它们加上static关键字,以限制其作用域在该.cpp/.c 文件定义的编译单元。这将减少当链接2个或更多使用了相同内部变量的.cpp 文件时, 出现“multiply-defined symbol” 错误的情况。

其他更多示例看附件 All-In-One Code Framework 下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值