gpt4 book ai didi

c++ - 不能使用预处理器语句禁止标准函数吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:01 25 4
gpt4 key购买 nike

正在尝试解决此问题:C++ How can I prevent my team developers from using integer version of abs by mistake?通过使用宏使 abs 函数不再可用。

如果我使用 g++ 选项 -Dmyabs=abs 编译包含 myabs(3); 的代码,它会编译(myabs 被替换为 abs),很好。

现在,如果我使用 g++ 选项 -Dabs=forbidden 编译包含 abs(3); 的代码,它也会编译...为什么它不报告 forbidden 未知?看起来 abs 在预处理过程中没有被 forbidden 替换...为什么?

最佳答案

Looks like abs is not replaced by forbidden during pre-processing...why?

至少我使用的标准库头文件 (libstdc++) 定义了 ::abs,取消定义你的宏:

// Get rid of those macros defined in <math.h> in lieu of real functions.
#undef abs
#undef div
// ...

您的 header 可能做同样的事情。鉴于这样的未定义,使用预处理器宏来禁止这样的功能确实是不可能的。

关于c++ - 不能使用预处理器语句禁止标准函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500114/

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