teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

Rustフォーラムの類似質問を追加

2020/06/28 08:56

投稿

equal-l2
equal-l2

スコア172

answer CHANGED
@@ -15,4 +15,7 @@
15
15
  printf(fmt.as_c_str().as_ptr(), i, j);
16
16
  }
17
17
  }
18
- ```
18
+ ```
19
+
20
+ 似たような質問をRustのフォーラムで見つけたので貼っておきます。
21
+ [How to wrap `printf` in libc properly?](https://users.rust-lang.org/t/how-to-wrap-printf-in-libc-properly/20370)

1

ラッパコードへのリンクを追加

2020/06/28 08:56

投稿

equal-l2
equal-l2

スコア172

answer CHANGED
@@ -1,4 +1,4 @@
1
- そのcrateにはC言語でvoid*からva_listへ変換するラッパーコードが含まれていて、Rust側ではそのラッパを呼ぶことでprintfを呼んでいます。したがって、そのcrateのprintfのシグネチャはそもそも本来のprintfとは異なるものです。
1
+ そのcrateには[void*va_listへ変換するC言語のラッパーコード](https://github.com/derekdreery/alpm/blob/master/printf/src/printf_wrapper.c)が含まれていて、Rust側ではそのラッパを呼ぶことでprintfを呼んでいます。したがって、そのcrateのprintfのシグネチャはそもそも本来のprintfとは異なるものです。
2
2
  可変長引数を渡したいなら、`...`を使うことで可能になります。
3
3
 
4
4
  ```rust