gpt4 book ai didi

c - 避免使用宏将声明与实现分开

转载 作者:行者123 更新时间:2023-11-30 14:56:29 24 4
gpt4 key购买 nike

为数据缓冲区编写一些代码,我认为最好通过以下方式在 header 中提供缓冲区的最大大小:

#define MAXIMUM_BUFFER_SIZE (SIZE_MAX - 1)

然而,我在其中看到的最大缺点(除了使预处理器困惑之外)是最大大小实际上是特定于实现的并且可能会改变。如果其他代码依赖于旧 header 但依赖于新实现或相反,则它可能会中断。因此我想到了一种更抽象的方式,声明一个函数

size_t maximumBufferSize();

在 header 中并在相应的实现文件中提供实现。我不太关心运行时,特别是因为该值仍然保持不变,只需要计算一次,然后可以在必要时存储在其他代码文件中的其他位置。

所以我真正的问题是:这两种方法还有其他我必须考虑的优点和缺点吗?还有第三种方法可以达到相同的结果,甚至更好吗?

最佳答案

第一种方法是要走的方法。任何依赖于该实现的方式都会被新实现破坏的东西都写得很糟糕,并且在决定是否使用最佳方法时不应被视为“缺点”。

仅当编译时大小未知时才应使用第二个。

关于c - 避免使用宏将声明与实现分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44658662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com