使用宏STATIC的重要性

Ble*_*mer 10 c syntax static

我有一些遗留代码,它使用宏定义

#ifdef def_STATIC
#define STATIC static
#else
#define STATIC
#else
#endif
Run Code Online (Sandbox Code Playgroud)

我理解使用STATIC将有助于限制变量的范围取决于def_STATIC 但在什么情况下使用这种做法?它有什么用?

Fre*_*ame 8

我自己从未遇到过这样的宏,但根据这个:"XFS删除#define STATIC static"源它用于禁用静态函数,因为GDB无法正确调试静态内联函数.这就是为什么这个宏被用来暂时使它们非静态的原因.

纠正我,如果我错了,我只是用谷歌搜索:)一个有趣的问题真的)

  • 虽然我读到了这个链接,但我在这里补充说:"它曾用于帮助旧的``kdb`*(它不知道静态函数).但是由于实现了CONFIG_KALLSYMS,这已经过时了.`gdb`应该总是知道静态功能." ... @ issue [02068](http://oss.sgi.com/archives/xfs/2002-10/msg02068.html) (2认同)
  • @FreeNick:是的我觉得他意味着新版本的`kdb`因为[here @ issue#02072](http://oss.sgi.com/archives/xfs/2002-10/msg02072.html)我读到:"使用`STATIC`在`static`和`extern`之间切换*弃用*.在源代码中将`STATIC`改为`static`,从Makefile中删除`-DSTATIC`,删除'STATIC`的`#define`. (2认同)