[问题] 全域变量宣告方式

楼主: gg1122 (99通未接来电)   2014-08-27 23:21:47
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
全域变量宣告方式
1. A.c int global =100 ; 宣告一个 global.h extern int global;
谁include global.h 谁就可call
2. A.c static int global = 100 ; A.h void SetGlobal (int value);
A.h void GetGlobal(int *value );
要写要读 请都call 函数
3. 直接在A.h 宣告一个 int global ;
我想请问各位在开发专案 都偏向哪种? 之前我个人的经验都是用1或2
不过现在团队都是用3
现在开发的环境 没有现成同步函数去写的时候上下去包住
我该建议用2吗?
另外一般开发专案全域变量 一般都用3吗?
PS 目前专案单颗ARM控制周边IC 没双CPU
这几天忽然觉得好像很久没宣告3的样子了...以前在写BCB的时候
好像才会直接弄到该档案.h 把from public 丢来丢去
另外偷渡一个问题 最近看到一个.h
有一个函数 static inline void function();
static 不是local scope 又宣告在.h 让人call 这有什么好处吗??
还请各位能指导 谢谢
喂入的资料(Input):
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
作者: azureblaze (AzureBlaze)   2014-08-28 01:23:00
3被两个档案include就爆炸了吧2比较好,可是最好的是不要用global
作者: Killercat (杀人猫™)   2014-08-28 01:32:00
不是有个关键字叫做extern吗?噢我猜你说的1.就是extern... 不过现在趋势来讲通常一个singleton context会比global好用且安全一点简单的说就是singleton一个class 把所有global放里面或者,不要用singleton,想办法管理传递这个context总之 global算是挺古典的做法 试试看context吧
楼主: gg1122 (99通未接来电)   2014-08-28 07:45:00
2. 我同事觉得用起来很烦 现在已经是全域变量满天飞了k大的之后切回去c++在玩玩看谢谢
作者: Killercat (杀人猫™)   2014-08-28 08:42:00
C一样能用一个struct把全域都包起来传来传去看你要把它当“单一global”或者“可传递的context”都可以。context绝对比一狗票global好管理太多 :P
楼主: gg1122 (99通未接来电)   2014-08-29 22:40:00
ok 这二天谷狗研究看看 谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com