C 使用宏静态的重要性

C 使用宏静态的重要性,c,syntax,static,C,Syntax,Static,我有一些遗留代码,它使用宏定义作为 #ifdef def_STATIC #define STATIC static #else #define STATIC #else #endif 我理解使用STATIC将有助于根据def_STATIC 但在什么情况下使用这种做法? 它有什么帮助?我自己从来没有遇到过这样的宏,但根据来源:它被用来禁用静态函数,因为GDB无法正确调试静态内联函数。这就是为什么这个宏被用来暂时使它们成为非静态的 如果我错了,请纠正我,我只是在谷歌上搜索了一下:) 这真是一个有趣

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

#ifdef def_STATIC
#define STATIC static
#else
#define STATIC
#else
#endif
我理解使用
STATIC
将有助于根据
def_STATIC
但在什么情况下使用这种做法?
它有什么帮助?

我自己从来没有遇到过这样的宏,但根据来源:它被用来禁用静态函数,因为GDB无法正确调试静态内联函数。这就是为什么这个宏被用来暂时使它们成为非静态的

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

如果您能提供一个参考,您在哪里找到这个宏定义的,那就好了?因为如果这是我的代码,我会犯很多错误:)你在任何标准库中看到了吗?@Dayalrai问题不是“静态意味着什么?”而是“上面显示的宏在C项目中什么时候有用?”这种通心粉通常用于解决链接器问题。当你能看到宏的使用位置时,让我们猜测它的用法没有多大意义。@GrijeshChauhan,那不是我。顺便说一句,6投1平是罕见的组合。不管怎样,你下面的答案证明了这个宏的必要性。@GrijeshChauhan:专有库代码。虽然我读了你的链接,但我在这里添加了:“它用于帮助旧的
kdb
(它不知道静态函数).但由于CONFIG_KALLSYMS已经实现,这已经过时。
gdb
也应该知道静态函数。”…@issue@GrijeshChauhan,感谢您添加此信息。起初我想提到
kdb
,但后来在讨论中基思·欧文斯写道
kdb在静态函数方面没有问题。我想这里提到这两个版本是件好事,因为我们不确定哪一个是正确的。谢谢你的回答,但我相信答案肯定会有所改进。@FreeNick:是的,我想他指的是新版本的
kdb
,因为我读到:“不推荐使用
STATIC
STATIC
extern
之间切换。将源代码中的
STATIC
更改为
STATIC
,从Makefiles中删除
-DSTATIC
,删除
#定义
STATIC
“@Bleamer,很公平:)我希望在实践中使用这种宏的人会出现。我自己也很感兴趣:)