专业的C/C++头文件写法 (

22 篇文章 0 订阅

专业的C/C++头文件写法

  (2011-06-28 14:48:30)
标签: 

转载

分类: 技术
做到专业,应该是每个职业程序员应该要求自己做到的。 让我们看看lua是怎么写头文件的

做到专业,应该是每个职业程序员应该要求自己做到的。
让我们看看lua是怎么写头文件的。

1.License Agreement
License Agreement应该加在每个头文件的顶部。
Lua Sample:

 

 

 

2.guard define
整个头文件应该在guard define之间


#ifndef lua_h
#define lua_h

#endif
另外,如果这个头文件可能给c++使用,要加上


#ifdef __cplusplus
extern "C" {
#endif

 

#ifdef __cplusplus
}
#endif

3.尽量不要在头文件中暴露数据结构

这样可以用户对你的实现的依赖,也减少了用户的编译时间

 

typedef struct lua_State lua_State;
LUA_API lua_State *lua_open (void);
LUA_API void lua_close (lua_State *L);

可以看到虽然用户会一直使用lua_State,但是并不知道lua_State的结构是什么

从一个使用lua的例子程序可以看出:

 

#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"

 

int main(int argc, char *argv[])
{
lua_State *L = lua_open();
const char *buf = "var = 100";
int var ;
luaopen_base(L);
luaopen_io(L);
lua_dostring(L, buf);
lua_getglobal(L, "var");
var = lua_tonumber(L, -1);
lua_close(L);
return 0;
}

 

4.函数声明前加XXX_API已利于拓展

Lua的例子

 

#ifndef LUA_API

#define LUA_API extern

#endif

 

LUA_API lua_State *lua_open (void);

 

 

如果定义了LUA_API就是给LUA内部使用的

如果没定义LUA_API就是for user 的

写Window dll程序经常会用到

 

#ifdef DLLTEST_EXPORTS

#define DLLTEST_API __declspec(dllexport)

#else

#define DLLTEST_API __declspec(dllimport)

#endif

 

 

5.宏的定义

尽量使用括号来包住所定义的对象

 

#define LUA_TNONE (-1)

 

#define lua_register(L,n,f)

(lua_pushstring(L, n),

lua_pushcfunction(L, f),

lua_settable(L, LUA_GLOBALSINDEX))

 

 

6.目录结构

一般应该使用一个单独的include目录来包含要发布的头文件,但不应该把内部使用的头文件包含进去。

Lua 的 include目录只包含了三个头文件

lauxlib.h , lua.h, lualib.h

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值