The C program language

原创 2015年07月08日 10:16:01

1. .h文件中慎定义static变量,否则每一个包含此.h的c文件都会得到一个独立的变量,这可能不是你想要的。

Example as below:

  a) 在.h中定义了一个锁DEFINE_MUTEX(runtime_lock), 在两个.c文件中通过此锁来保护临界资源;编译不通过,提示多处重复定义此变量;

  b) 看到此.h中定义了好多static变量,随手改为static DEFINE_MUTEX(runtime_lock),编译通过;调试,测试,stress测试,都没发现问题  ;

  c)一个月后,发现问题,debug,发现runtime_lock根本就没起到保护临界资源的作用(足足花了两天的时间,才发现到是锁没起到作用),再去看此锁的定义,发现问题所在;

  d)重新定义锁,在一个.c文件定义DEFINE_MUTEX(runtime_lock),在.h中申明extern struct mutex runtime_lock,解决问题。

Post-mortem:

  a) 不要想当然,当定义static等变量的时候,多想想;

   b)在.h文件中慎定义static变量,否则每一个包含此.h的c文件都会得到一个独立的变量,这可能不是你想要的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

the C program language

  • 2015-08-05 13:07
  • 14.16MB
  • 下载

c program of language

  • 2015-02-05 10:10
  • 130KB
  • 下载

how to use a SQLite database in a standalone program with an HTML interface and VBScript as the programming language

This article describes how to use a SQLite database in a standalone program with an HTML interface a...

the C program language

  • 2007-06-01 17:44
  • 419KB
  • 下载

The+C+Program+Language

  • 2008-07-13 15:03
  • 872KB
  • 下载

Failed to load the JNI shared library "C:\Program Files(X86)\Java\jdk1.8.0_45\bin\.....

Eclipse的位数必须与jdk的位数一样。。即64位的eclipse必须安装64位的jdk…检测jdk安装版本:1.cmd 输入 java -version ,如果是64位则默认提示,,若为32位,...

The C Program Language

  • 2009-12-23 23:43
  • 872KB
  • 下载

“访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_20\lib\rt.jar具有一定限制,因此无法访问构造函数JFrame()”的解决方法

访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_20\lib\rt.jar具有一定限制,因此无法访问构造函数JFrame()
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)