[迷信] ソースファイルの末尾に} 公開日:2021年6月8日 C/C++迷信集プログラミング技術情報 これは迷信ではなく、よくある間違いです。この間違いの最悪なところは、書いた本人も、自分がどう書いたのかをほとんど自覚していないところにあります。実際、「ソースファイルの末尾に}」と指摘しただけでは、具体的にどういう状況な […] 続きを読む
[迷信] ソースコード中の即値を全廃せよ 公開日:2021年6月7日 C/C++迷信集プログラミング技術情報 言語を問わず、プログラミングではマジックナンバーが嫌われる傾向にあります。しかし、マジックナンバーについて誤解しているケースも少なからず見受けられます。典型的なのは、即値=マジックナンバーという誤解です。即値とマジックナ […] 続きを読む
[迷信] プログラムは必ずmainから始まる 公開日:2021年6月7日 C/C++迷信集プログラミング技術情報 C言語やC++の入門書を読めば、プログラムはmain関数から始まると書かれています。そのこと自体は間違っていませんが、「必ず」そうかというと3つの意味で正しくありません。ひとつはスタートアップの存在であり、ひとつはフリー […] 続きを読む
[迷信] scanfではバッファオーバーランを防げない 更新日:2021年6月20日 公開日:2021年6月6日 C/C++迷信集プログラミング技術情報 これも根が深い迷信です。この迷信を根拠にscanf関数は使うべきではないという人も大勢います。おそらくこういうことでしょう。 [crayon-676e157b6ad94006902481/] 確かにこれでは、ユーザーが1 […] 続きを読む
[迷信] isalpha関数の引数はchar型 公開日:2021年6月6日 C/C++迷信集プログラミング技術情報 isalpha関数に限ったことではありませんが、<ctype.h>ヘッダで宣言されるis系関数は、次のようにint型の引数を取ります。 [crayon-676e157b6af7a788135569/] このこ […] 続きを読む
[迷信] 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 […] 続きを読む
[迷信] fflushで入力バッファをクリア 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 よくある状況として、 [crayon-676e157b6b360576697783/] のようにすると、入力バッファに改行文字が残ってしまうため、直後にgetchar関数などを呼び出すと期待した動作にならないことがありま […] 続きを読む
[迷信] freeでメモリを開放する 公開日:2021年6月4日 C/C++迷信集プログラミング技術情報 今回は、技術的な話題というより、むしろ国語に関する話題です。タイトルに示したように、最近は「メモリを開放」という表現を、ネット上だけでなく書籍でも非常に多く見かけます。しかし、mallocで割り付けたメモリブロックに対し […] 続きを読む