[迷信] scanfではバッファオーバーランを防げない 更新日:2021年6月20日 公開日:2021年6月6日 C/C++迷信集プログラミング技術情報 これも根が深い迷信です。この迷信を根拠にscanf関数は使うべきではないという人も大勢います。おそらくこういうことでしょう。 [crayon-6740d1b492fa6166522635/] 確かにこれでは、ユーザーが1 […] 続きを読む
[迷信] isalpha関数の引数はchar型 公開日:2021年6月6日 C/C++迷信集プログラミング技術情報 isalpha関数に限ったことではありませんが、<ctype.h>ヘッダで宣言されるis系関数は、次のようにint型の引数を取ります。 [crayon-6740d1b4932fa097540762/] このこ […] 続きを読む
[迷信] setjmpマクロの返却値は変数に代入できる 公開日:2021年6月6日 C/C++迷信集プログラミング技術情報 setjmpマクロはC言語の標準ライブラリの一部ですが、知らない方も少なくないでしょうし、知っていても使ったことがない方も多いと思います。今回は本題に入る前に少しsetjmpの解説から行うことにします。 setjmpとい […] 続きを読む
[迷信] 構造体のタグ名は下線で始める 公開日:2021年6月5日 C/C++迷信集プログラミング技術情報 C の場合、タグ名だけでは型名になれず、struct, union, enumを付けなければなりません。そのため、使い勝手を向上するために typedef 名を付けることが多いのではないでしょうか? 一方、C++ではクラ […] 続きを読む
関数のアドレスと空ポインタの比較 公開日:2021年6月5日 プログラミング技術情報 フック関数など、特に必要がなければ、実体は何も定義しないまま、関数のシンボルを0番地に配置しておき、必要になった時点で実際の関数で置き換えるといった技法がよく使われます。 具体的には、GNUのリンカスクリプトでPROVI […] 続きを読む
[迷信] 構造体はクラスではない 公開日:2021年6月5日 C/C++迷信集プログラミング技術情報 C++における構造体とクラスは似て非なるものと考える人は少なくありません。確かに構造体とクラスは同義ではありませんが、構造体がクラスではないかというとそれも違います。C++では、構造体は一種のクラスです。JIS X301 […] 続きを読む
[迷信] fflushで入力バッファをクリア 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 よくある状況として、 [crayon-6740d1b4936bd024792881/] のようにすると、入力バッファに改行文字が残ってしまうため、直後にgetchar関数などを呼び出すと期待した動作にならないことがありま […] 続きを読む
[迷信] freeでメモリを開放する 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 今回は、技術的な話題というより、むしろ国語に関する話題です。タイトルに示したように、最近は「メモリを開放」という表現を、ネット上だけでなく書籍でも非常に多く見かけます。しかし、mallocで割り付けたメモリブロックに対し […] 続きを読む
[迷信] FILE型は構造体 更新日:2021年6月7日 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 今回は、C言語でファイル操作によく使うFILE型に関する迷信です。FILE型と書きましたが、このように呼ぶ人は世間では意外に少なく、多くの人はFILE構造体と呼びます。では、FILE型は常に構造体であると考えてよいのでし […] 続きを読む
[迷信] 2の累乗による割り算と右シフトは等価 公開日:2021年6月3日 C/C++迷信集プログラミング技術情報 多くの場合、実際に試してみればすぐに分かることですが,2nによる割り算と右シフトは、常に等価になるとは限りません。しかし、この問題は規格上処理系定義の要素が複雑に絡み合っているため、注意深く考えないと全体像をとらえること […] 続きを読む