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(中文+英文)

  • 2013年08月21日 09:41
  • 21.01MB
  • 下载

C program language(2)

  • 2011年09月28日 13:39
  • 5.9MB
  • 下载

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 (C程序设计)

  • 2010年11月05日 11:10
  • 14.16MB
  • 下载

The Program C++ Language Et3

  • 2015年06月22日 11:19
  • 17.16MB
  • 下载

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

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

C++ Program Language

  • 2010年04月15日 10:21
  • 4.06MB
  • 下载

python language program

  • 2007年11月06日 21:28
  • 257KB
  • 下载

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

---》初使用eclipse编辑器编写java程序时,调用窗体对象时,若出现如下问题时:         访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_2...

The Java Program Language (1)

  • 2010年10月19日 22:43
  • 14.31MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:The C program language
举报原因:
原因补充:

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