生きる

助けて

C/C++

関数テンプレートの明示的実体化と実体の宣言

明示的実体化を説明する前に実体化の意味をはっきりさせておく必要がある。似た言葉に特殊化があるが、特殊化と実体化は異なる。まずはその違いを説明する。 以下を例に考える。 template<typename T> T calc(T a, T b) { return a + b; } 実体化の方がわかりやすい。実</typename>…

C言語で可変長引数を取る関数を定義する

可変長引数とは、printf関数が取るような、あらかじめ個数が決まっていない形式の引数のことである。 例えば、自分用のprintfを新たに定義したいとすると、引数の部分は次のように書く。 void myprintf(char *fmt, ...) { } こう書くと、fmtに続く引数が可変…

VSCodeのC/C++拡張(ms-vscode.cpptools)のデバッグ機能がM1 Macに対応していない件

2ヶ月ぐらい前に届いたMacBook Air (M1, 2020)をやっと使い始めている。VSCodeがもうApple M1チップにネイティブ対応しているらしいので、設定をすることにした。今のところプロコンぐらいしか使い道が思い浮かばないので、すごく本格的なことができる必要は…