


























这是一个创建于 579 天前的主题,其中的信息可能已经有所发展或是发生改变。
用到一个库,,它有一个接口函数如下:
/**
* @brief interface print format data
* @param[in] fmt is the format data
* @note none
*/
void ov2640_interface_debug_print(const char *const fmt, ...)
{
}
这个函数的函数原型与 printf 完全一致,,所以我想像下面这样直接把它的参数传递给 printf ,,可是编译器报错,,请问应该怎么改??
void ov2640_interface_debug_print(const char *const fmt, ...)
{
printf(fmt, ...);
}
1 654656413245 2024 年 11 月 12 日printf(fmt, __VA_ARGS__); |
2 geelaw 2024 年 11 月 12 日 via iPhone关键词:vprintf |
3 XIVN1987 2024 年 11 月 12 日@geelaw va_start(args, fmt); |
4 wfg 2024 年 11 月 12 日 via iPhone |
6 geelaw 2024 年 11 月 12 日@XIVN1987 #3 好像可变参数本身就不是简洁直接的东西。 另外这也提示你应该把实现放在 void v_ov2460_interface_debug_print(char const *fmt, va_list arg); 里面,并在可变参数版本里调用它。 请注意,如果这个函数本身需要在 vprintf 之外操作可变参数列表,需要 va_copy 之,否则行为不确定。 |
7 pursuer 2024 年 11 月 12 日我觉得 C 中缺少两个机制,一个是动态函数调用,类似 libffi 。另一个是简单的栈切换,类似 ucontext 。这两个东西依赖 C 的 ABI ,又有不少上层应用需要这个特性,特别是 ffi 。不知道会不会有一天被加入标准库。 |
8 cwxiaos 2024 年 11 月 12 日 via iPhone用宏套一下也可以吧 |
10 codehz 2024 年 11 月 13 日其实要用编译器扩展的话可以简单点,直接 |
11 codehz 2024 年 11 月 13 日哦忘了,那玩意得加__attribute__ ((__always_inline__))才可以,不内联的情况下会失败 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。