d*******o 发帖数: 5897 | 1 这样子在main.c里岂不是没法用关键字extern原来的含义了 |
|
k****e 发帖数: 126 | 2 可以這樣
main.h:
#ifdef MAIN
#define EXTERN_W
#else
#define EXTERN_W extern
#endif
EXTERN_W int timer_tick;
main.c:
#define MAIN
#include "main.h" |
|
a****l 发帖数: 8211 | 3 那为什么不是你在main.h里面就定义extern int timer_tick,然后在实际操作timer_
tick的C文件里面定义int timer_tick呢?这样做不是更简单吗?
main |
|
l*********s 发帖数: 5409 | 4 because they are global variables. |
|
d***a 发帖数: 13752 | 5 还有更简单的办法: main.h按常规方法定。在main.c里,
#define extern
#include "main.h"
#undef extern
这样main.c的其它地方还可以正常地用extern。
但是,我个人不赞同用这样非常规的方法。
main |
|
|
n***e 发帖数: 723 | 7 其实我没搞明白,我觉得在main里面要是不写那个extern不是更省更直观。。。 |
|
b***i 发帖数: 3043 | 8 不是每个文件100个啊,是整个项目全部放到一个文件里面去而已 |
|
n***e 发帖数: 723 | 9 这样做会有global coupling的问题。你可能修改程序的某些模块的时候牵扯到很多别
的模块。。。 |
|
k**s 发帖数: 53 | 10 这个真的不是个好的程序风格:人为的增加了程序阅读的复杂性。如果有code review
的话,过不了。老老实实的在main.c里声明int timer_tick;然后在main.h里声明
extern int timer_tick; 一目了然的事情。
main |
|
j********x 发帖数: 2330 | 11 这好比在一条错误的道路上找到一条稍微不那么错误的道路。。。 |
|
|
z****e 发帖数: 54598 | 13 说绝对强于oo的话
来,我们做一个code challenge
我做一个游戏场景,里面大量使用到了局部的全局变量
以及对于各个角色的封装
这个用fp怎么搞?
rest
db |
|
|
z****e 发帖数: 54598 | 15 说绝对强于oo的话
来,我们做一个code challenge
我做一个游戏场景,里面大量使用到了局部的全局变量
以及对于各个角色的封装
这个用fp怎么搞?
rest
db |
|
|
|
h******k 发帖数: 388 | 18 丰田应该改用Java。彻底解决全局变量问题:~) |
|
c*******9 发帖数: 9032 | 19 对没有相关数学基础的人来说monad确实抽象了些。不过不认同王垠对monad的批判,照
他的说法,什么语音都不用封装,直接全局变量岂不是更方便。 |
|
r****y 发帖数: 26819 | 20 除了第一部分,后面那部分没有什么陷阱啊。完全是用字符串创建一个Function objec
t的用法。关键是调用这些创建的Function object时,i是个全局变量,简直都想不出
还能有什么其它可能性。所以太简单了。完全等于这样:
f = new Function("console.log(i)");
i = 5;
f();
f = new Function("console.log(i)");
i = 6;
f();
...
就这个,版上多少人会写不出答案来? |
|
f*******5 发帖数: 10321 | 21 有的crypto实现要用了全局变量,多线程时就不能直接使 |
|
d****i 发帖数: 4809 | 22 丰田那个例子显然是写代码的人违反了最基本的写嵌入式C代码的规则,全局变量没什
么,有很多时候就是要这样用。但是用递归显然是违反了规则一:递归绝对不能在嵌入
式里面用。simulink的自动生成后当然要人去维护,要不怎么upgrade? 所以自动生成
的代码是无法被人所读懂的,而且效率也差。 |
|
z********0 发帖数: 9013 | 23 直接说你想干嘛把?别总想把Compiler骗过去,这年头不容易骗了
C语言,全局变量总会在内存里的,用到的时候会Load到寄存器,但早晚总会写回去的
,当然了,多线程下是不安全的。 |
|
M***0 发帖数: 1180 | 24 假如我有一个service method要更新user info,但必须先查询该user是否active,代码
是不是像这样?
定义一个全局变量:
var eventEmitter = new events.EventEmitter();
DAO layer:
var isUserStatusActive = function isUserStatusActive(userId)
{
...
return true/false;
}
var updateUser = function updateUser(user)
{
...
}
eventEmitter.on("com.myapp.dao.userDao.isUserStatusActive",
isUserStatusActive);
eventEmitter.on("com.myapp.dao.userDao.updateUser", updateUser);
Service layer:
var validateAndUpdateUser = function validateAndUpdateUse... 阅读全帖 |
|
N******K 发帖数: 10202 | 25 我现在都用 enum struct
裸体enum跟全局变量没啥区别 |
|
w********r 发帖数: 1971 | 26 这种全局的最好存在xml,设计一个静态类读入。这是基本设计的东西跟wpf没关系
wpf都是泪,做了几年。 微软抛弃了不说,bug 也不修复。很牛叉的mvvm架构。可惜了 |
|
g****t 发帖数: 31659 | 27 这个swift除了降低门槛之外。还有很多很牛x的非常新的特点。
generic programming, functional programming等等。
还有一些特点看上去照样可以让全局变量满天飞。
再加上llvm实际上是把swift翻译成object c。
我真不知道说什么好了。我感觉新特性有点过于多了。 |
|
f******x 发帖数: 98 | 28 局限在常识里,就没办法进步了。当年禁止goto不也有大批程序员反对?goto不也符合
你所谓的常识?中学物理的常识里,物体难道不是可以移动(goto)的?硬件上也很直
观,不就是直接设置PC吗?goto的效率也高,比call函数快吧。现在怎样了?
还有,当年的Cobol,不也是想设计成一种接近English和普通人思路的语言吗?结果呢?
这样的例子还有很多,全局变量不也很直观,很符合中学物理和普通人的理解吧?
所以你所谓的常识靠不住,只靠普通人的常识设计计算语言是disaster, |
|
c******e 发帖数: 545 | 29 单片机如无特别必要就别用啥malloc/free了,都开全局变量就行了。 |
|
r*****8 发帖数: 2560 | 30 程序结束以后,全局变量所占的内存都会被收回是吗? |
|
z****e 发帖数: 54598 | 31 这都是features
整个paradigm的修改是对你思想上作修改
你要有fp的思想,而不是着眼于这些feature
不过从这方面上说,fp显得很八股
为什么我一定需要用这种思想去写程序捏?
fp并没有带来足够的benefits让你去接受这个思想
不像oop对于procedural的提升一样明显
当年procedural最大的问题是容易导致混乱
经常性全局变量和函数,导致系统一旦作大,分工就不明确
各种乱,项目会挂
所以强制要求包装,目的是不给其他人添麻烦
其实封装才是oo最大的遗产,这个跟modular paradigm本质上是一样的 |
|
|
s******u 发帖数: 501 | 33 hmm,没错,signal handler只能是函数指针,没法用bind
另外也可以用class static member function,这样不需要另外定义全局变量和free
function,当然这个handler相应的也不知道class的状态了 |
|
w***g 发帖数: 5958 | 34 我弄错了。查了下,webpy为每一个request instantiate一个object。
放到class里有点杀鸡用牛刀。最方便的办法是在定义class之前读入数据,
存到全局变量里。
啥。 |
|
|
H**********2 发帖数: 107 | 36 不是login的时候才开始session。页面一加载,server看不到client来的cookie里面有
session id就新开一个session。
另外这个sess很有问题。像是全局变量,最好移到function里面。 |
|
e*******s 发帖数: 1979 | 37 嗯 那为什么要优先解释为函数呢.
可能因为函数声明和全局变量没有办法区分开? |
|
|
m******r 发帖数: 1033 | 39 怎么方便怎么来,
怎么舒服怎么来。
人生一世草生一秋,成天为这种事纠结,想起来就是噩梦。
以前那个咖喱老是挑事儿,这个啦,那个啦。我就说我这么写自有我的道理,和别人无
关,我就想练习一下go to 语句和全局变量, 怎么了?
当然你要是找不到下家,就忍了吧。 人生几十年,闻闻咖喱味儿也就过去了 |
|
g****t 发帖数: 31659 | 40 半导体我目测这几年老中很强大。主要是客户很多都是国内公司。
客户让谁死谁就要死。
看哪个老印不爽,安排老印去国内出几次差就行了。
国内人民种族歧视本身就很厉害,加上听不懂印度英语...
: 怎么方便怎么来,
: 怎么舒服怎么来。
: 人生一世草生一秋,成天为这种事纠结,想起来就是噩梦。
: 以前那个咖喱老是挑事儿,这个啦,那个啦。我就说我这么写自有我的道
理,和
别人无
: 关,我就想练习一下go to 语句和全局变量, 怎么了?
: 当然你要是找不到下家,就忍了吧。 人生几十年,闻闻咖喱味儿也就过
去了
|
|
|
g****t 发帖数: 31659 | 42 You are right and I just verified by using a single function.
The theory is:
Local namespace is checked first. Then global and then
system build in namespace.
Thanks ! |
|
w********m 发帖数: 1137 | 43 个人感觉,function上面加一层class,对python还是很有必要的。 |
|
g****t 发帖数: 31659 | 44 Get thing done就可以吧。
: 个人感觉,function上面加一层class,对python还是很有必要的。
|
|
L***s 发帖数: 1148 | 45 LEGB scoping rule
具体实践上,可以在 local 再引用一次 global
比如标准库里的小顶堆实现里的几句:
https://hg.python.org/cpython/file/2.7/Lib/heapq.py#l215
_heappushpop = heappushpop
for elem in it:
_heappushpop(result, elem)
这里 heappushpop 是另外一个函数,在 global scope
如果直接放 for 循环里,每次都得先 lookup local scope,
再查 enclosed 和 global scope,就慢了。
所以在 local scope 里用 _heappushpop 来引用 global scope 的对象
for elem in it:
heappushpop(result, elem) |
|
g****t 发帖数: 31659 | 46 杩欎釜鍔炴硶涓嶉敊馃憤
璋㈣阿鎸囩偣
銆鍦Leiss(寰曞徃) 鐨勫ぇ浣滀腑鎻愬埌: 銆br />
: LEGB scoping rule
: 鍏蜂綋瀹炶返涓婏紝鍙互鍦local 鍐嶅紩鐢ㄤ竴娆global
: 姣斿鏍囧噯搴撻噷鐨勫皬椤跺爢瀹炵幇閲岀殑鍑犲彞锛br />
: https://hg.
python.org/cpython/file/2.7/Lib/heapq.py#l215
: _heappushpop = heappushpop
: for elem in it:
: _heappushpop(result, elem)
: 杩欓噷 heappushpop 鏄彟澶栦竴涓嚱鏁帮紝鍦global scope
: 濡傛灉鐩存帴鏀for 寰幆閲岋紝姣忔閮藉緱鍏lookup local scope锛br />
: 鍐嶆煡 enclosed 鍜global scope锛屽氨鎱簡銆br />
|
|
v*******e 发帖数: 11604 | 47 波马圣经 (手稿)
基本依据(这是写给自己看的,是总纲)
人脑
动物的脑是生物长期进化的产物。它的功能建立在物质基础上。它的发生、发展,都是
因为动物生存和繁衍的需要。经过很长很长的时间,新的动物种类不断出现,同一时期
最复杂、功能最强的动物脑,比历史上更古老时期的脑具有越来越多、越来越强的能力
。由于我们主要讨论人类的命运,所以下面主要讨论对象是人脑。这些讨论的大部分,
除去主要是语言的部分,也可以适用于灵长类动物的脑。再少一点的部分也适用于哺乳
动物的脑。再少一点的也适用于鸟类的脑。更少一点的爬行动物的脑。更少一点也适用
两栖类或者更古老种类动物的脑。
人脑它拥有出一个学习机制,它可以通过学习获得许多知识和能力。学习的过程是缓慢
的。如果时间允许,通过学习来获得这些能力,比依靠天生(通过遗传)来获得这些能
力要更容易。基本上可以说,能够通过学习来获得、并且可以忍受学习的缓慢性的能力
,都会通过学习获得,而不会天生(通过遗传)获得。这个学习机制的正常工作依赖于
外界输入。
上述学习机制赋予人脑学习功能。我们所关心的、关系到智能的,人脑的学习功能主要
有下列。1。对事物进行抽象、分类,... 阅读全帖 |
|
m*********t 发帖数: 858 | 48 javascript ugly 的地方很多。一堆prototype到处乱写。一个回调套一个回调。全局
变量window |
|
d******c 发帖数: 2407 | 49 <- 是一个函数,在data[,coln] <- 0 里实际调用的是另一个matrix为此定义的函数,
而不是常规<-
<<-只替代常规<-
解决办法很多,先用<-,然后data <<- data,或者不用全局变量而是在函数外面覆盖
你的值
凡是这种局部修改,实际上copy已经发生了,<<-就算能用,也没有减少copy 的次数,
所以copy也没有性能损失。
R现在好像没宣传是大数据利器,主要是包多,用起来简单而已。python吹的比较多。
对R语法的抱怨不稀奇,历史悠久了。 |
|
L****8 发帖数: 3938 | 50 def f():
x=y
return x
#end
y=20;
f()
这样 y居然可以当做全局变量传到函数f()里面 |
|