[問題] 動態決定variadic 函數的參數個數
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
hiredis, C client of redis server
問題(Question):
hiredis中提供了一個類似`printf`的API來傳送指令給redis server:
ex:
```c
reply = redisCommand(context, "SET foo %s", value);
reply = redisCommand(context, "SET foo %s %s %s", value1, value2, value3);
```
我希望後面接的參數是可以動態決定數量的。因此我想要把它包成一個繼承自
`std::ostream`的class
如此一來,要動態決定參數數量就變得很簡單:
```cpp
Command << "SET foo " << value1 << value2 << value3;
```
但是目前函式庫只有提供:
void *redisvCommand(redisContext *c, const char *format, va_list ap);
void *redisCommand(redisContext *c, const char *format, ...);
不知道有沒有人有用C++處理variadic function的經驗。
有一種解法是自行寫出va_list的資料結構後直接餵給`redisvCommand`,
但是這種寫法似乎不容易跨平台,所以我先不考慮。
請問有沒有人有更好的作法?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.92.165
※ 編輯: Wush978 來自: 118.166.92.165 (07/21 23:31)
推
07/21 23:34, , 1F
07/21 23:34, 1F
→
07/21 23:35, , 2F
07/21 23:35, 2F
→
07/21 23:36, , 3F
07/21 23:36, 3F
→
07/21 23:36, , 4F
07/21 23:36, 4F
→
07/21 23:38, , 5F
07/21 23:38, 5F
→
07/21 23:38, , 6F
07/21 23:38, 6F
→
07/21 23:52, , 7F
07/21 23:52, 7F
→
07/21 23:56, , 8F
07/21 23:56, 8F
→
07/22 00:42, , 9F
07/22 00:42, 9F
推
07/22 01:28, , 10F
07/22 01:28, 10F
→
07/22 01:29, , 11F
07/22 01:29, 11F
→
07/22 01:29, , 12F
07/22 01:29, 12F
→
07/22 01:30, , 13F
07/22 01:30, 13F
→
07/22 01:30, , 14F
07/22 01:30, 14F
→
07/22 01:31, , 15F
07/22 01:31, 15F
→
07/22 15:51, , 16F
07/22 15:51, 16F
→
07/22 15:52, , 17F
07/22 15:52, 17F
→
07/22 15:52, , 18F
07/22 15:52, 18F
→
07/22 15:53, , 19F
07/22 15:53, 19F
→
07/22 15:53, , 20F
07/22 15:53, 20F
→
07/22 15:54, , 21F
07/22 15:54, 21F
推
07/22 19:57, , 22F
07/22 19:57, 22F
→
07/22 19:57, , 23F
07/22 19:57, 23F
→
07/22 19:58, , 24F
07/22 19:58, 24F
推
07/22 20:00, , 25F
07/22 20:00, 25F
→
07/22 20:00, , 26F
07/22 20:00, 26F
推
07/22 22:49, , 27F
07/22 22:49, 27F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):