sách gpt4 ai đã đi

c - 为什么要将静态函数替换为类对象宏#define STATIC static?

In lại 作者:太空宇宙 更新时间:2023-11-04 06:15:42 26 4
mua khóa gpt4 Nike

我刚刚在遗留代码中发现了这一点。我知道使用宏,每当使用名称时,它都会被宏的内容替换。它们最常用于为数字常量提供符号名称。我所知道的是预处理没有类型安全、范围的概念。

这样做的真正好处是什么?

#define STATIC static
STATIC function1() { /*Do something*/ }

我知道静态函数仅在该模块或翻译单元中可见。它们在定义的 C 文件之外不可见。


为什么不直接这样声明,而不是宏替换呢?

static function1() { /*Do something*/ }

我以为我会在 SO 中找到答案,但我没有找到任何合适的答案。

1 Câu trả lời

您没有理由这样做。通常,以这种方式将关键字隐藏在 #define 后面是一种不好的做法,因为代码变得晦涩难懂。

TÔI怀疑它与编码风格有关,以大写形式编写各种函数说明符很常见,尤其是在 Windows 编程中。通常是为了指定某种调用约定而完成的。例如 Windows 中的 CALLBACK,或者来自旧“Windows 圣经”(Petzold) 的这个示例:

#define EXPORT __declspec (dllexport)

(如果是 C++,可以将其修改为还包含 extern "C"。)然后您将拥有一个函数,例如 EXPORT void CALLBACK func (void)。同样,Windows 中也有 WINAPI.

有时我们也会看到类似的东西

#define PRIVATE static

这有点可怕,因为 tĩnh 实际上与 C++ 中的 riêng tư 具有相同的含义。

关于c - 为什么要将静态函数替换为类对象宏#define STATIC static?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46361611/

26 4 0
Bài viết được đề xuất: java - 伏地魔 setMaxThreads 用法
Bài viết được đề xuất: Python (PyRRD) 和带有 while 循环的 RRD?
Bài viết được đề xuất: java - 了解 maven-enforcer-plugin 在某些 pom 文件中的使用方式
Bài viết được đề xuất: python - 为静态文件配置 Python GAE app.yaml
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com