gpt4 book ai didi

c - 如何保证可变参数的类型安全?

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:18 24 4
gpt4 key购买 nike

在 C 中,我想创建一个如下所示的函数或宏:

void Log(char* what, ...) 

其中 ... 必须是 const char* 的键值对。我真的很希望不遵循这一点的代码在编译时爆炸。我试图寻找执行此操作的 __attribute((..)) 指令,但无济于事。有什么想法吗?

最佳答案

C 无法对任意可变参数强制执行类型安全。 GCC 和 Clang 对某些固定情况有 __attribute__(当可变函数期望最后一个参数为 NULL 时,您可以使用 __sentinel__;或当它是一个格式字符串时,你可以使用 format ),但没有通用的解决方案。

另一方面,C++11 有可变参数模板来解决这个问题,但既然你提到你在用 C 工作,它对你不起作用。

关于c - 如何保证可变参数的类型安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21295651/

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