c++ - 如何在每次调用 sprintf 之前调用 my_function ?

标签 c++ windows

sprintf是平台提供的API。我想在使用时过滤某些格式。我的想法是:

#include <stdio.h>

int my_sprintf(...)
{
    my_filter_function(...);
    return ::sprintf(...);  
}

#define sprintf my_sprintf

然后将这些代码放入pch中。

但我仍然担心它无法涵盖所有​​用法,有些用法在预构建库中,并不是每个项目都有 pch。你还有什么别的想法吗?

谢谢。它在 Windows 上。

最佳答案

您无法“覆盖”内置函数。此外,使用宏来替换其名称会导致程序出现未定义的行为。

所以,甚至不要尝试改变标准库的行为。真的,疯狂就是这样。

只需从您自己的代码中调用 my_sprintf 即可让平台执行其一贯执行的操作。

关于c++ - 如何在每次调用 sprintf 之前调用 my_function ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37111885/

相关文章:

c++ - 如何在 native C++ 中跨线程调用(在主线程上回调)

c++ - 如何使用 boost 可升级互斥量的示例

c++ - 基于数组的堆栈 - 析构函数中的错误

windows - Windows 中供应商的 OpenGL 驱动程序在哪里?

c - SetWindowsHookEx 运行返回 NULL

c++ - 生命周期短的分配会导致堆碎片吗?

c++ - 分析帖子请求

c++ - windeployqt 遗漏了一些库并获取了其他不需要的库

php - 无法在 win 7 xampp 中运行 memcached

windows - LogonSessionId 帐户在新证书中分配了读取权限?