このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

2016-05-01から1ヶ月間の記事一覧

Doxygen Markdownのバグ?

間違えやすい仕様も含まれる。 前後に空白なしの `hoge` は認識されないで、生タグ(ttタグ)が見えてしまう。 preブロックへの言語指定 ```hoge が場所によってエラーする 連続するpreブロックがあると、二番目は認識されない。 句点の直後に空白を忘れて自…

DoxygenのMarkdownファイルはソースファイル

Doxygenの自動リンク機能は強力で便利で、一度使い出すとやめられない。md(markdown)でも自動リンク構文が使える。ソース内のドキュメンテーションコメント以外に、独立したmdファイルのドキュメントも書いている。自動リンクを使い出すと、mdファイルも、…

古い感じの宣言

#include <stdlib.h> // _swab void _swab( char *src, char *dest, int n ); これ、_swabの第1引数は参照するだけだからconstなんだが、const付いてない。 something foo(const wchar_t *pSrc) { // ... _swap(pSrc, pDest, n); // ... } constの違いと、wchar_t* と </stdlib.h>…

グルーピングのモジュール機能

グルーピングの使い方として、@defgroup, @addtogroup ってのがある。 http://www.doxygen.jp/grouping.html 「@defgroup グループID タイトル」と「@addtogroup グループID」を使う。グループ範囲は //@{ と //@} で囲む。このグループには何を収めてもいい…

爺感:メモリ管理はやっぱり面倒くさい

大昔、 「プログラマの常識」ってなによ? - 檜山正幸のキマイラ飼育記 「常識」というよりは「理解の基盤」と「説明の方法」 - 檜山正幸のキマイラ飼育記 で、 char *foo() { char buffer[BUFF_SIZE]; // ... return buffer; } は話題にしたことがある。ret…

C++のめんどくせー所

別に嫌いではないが、めんどくせーと感じるのは: プリプロセッサ。こいつは、C/C++の構文を知らないアホタレだ。なのに、言語処理系全体としては、このアホタレに強く依存している。結果として全体がアホタレになってしまっている。 メモリ管理がうざい。バ…

gccのpre-compiled headerがらみの謎の現象

対処法は分かったが理由がサッパリ分からない謎の現象。これを詮索している余裕がないので、とりあえず起きたことを記しておく。後で再現できるかどうかは分からない。まず、2つのソースコードがある。1行しか違ってない! $ diff -u t_params.cpp t_params2…

爺感:ポインターを使ってしまう

時代が変われども、ポインターは相変わらず剣呑な野郎だ。 const some_type *some_pointer とか const some_type * const some_pointer でメモリを守る。 参照のほうが安全だし使いやすいから、参照が使えるなら参照を使う。 生ポインターを扱うmalloc/free…

爺感:なんだか作法がわからん

int foo(const int x) { // ... } のconstってなんだ? int foo(const int x) { x++; return x; } だと、エラーになる。 int foo(const int x) { int y = x; y++; return y; } とすればいい。だけど、何がうれしい? 何の意思表示だ?? 別にconstいらんじゃ…

爺感:ドカンと代入したり戻したり

ジイサマ(=自分)の感覚だと、Cの代入演算子 = でセットできるのは単純な型だ、という先入観がある。s = "abc"; はstrcpy()やstrdup()とは違う。if (s == t) のように文字列を比較してもしょうがない、strcmp() 使え、ってことになる。ところが、最近だと…

ジジイの感想・感覚、略して爺感

C/C++を20年ぶりくらいに使った。忘れているのか、もともと知らなかったのか(実際は両方)、戸惑う事やハマることもあった。それらは、だいたいメモしている。ここ20年でだいぶ様変わりしてるから、浦島太郎な感じもする。そこらへんをタイトルに「爺感」と…

クラス名の自動リンク

マニュアルによると、大文字から始まる単語はクラス名としてリンクされる、ということだが、効かない。語の末尾に'#'を付けると認識する。大域的な名前は語の先頭に'#'か'::'を付けると認識するようだ。ルールを完全には把握できてない。ルールなのかバグな…

非推奨であることを示す

http://stackoverflow.com/questions/12839517/detecting-deprecated-functions-in-c によると: Doxygenの@deprecatedディレクティブで、非推奨を指示できる。 GCCで __attribute__((__deprecated__)) で非推奨を指示できる。 MSVCで __declspec(deprecated…

DoxyfileとMakefileの連携

最初のうちは、Doxyfileの入力は FILE_PATTERNSにワイルドカードを書いていたが、だんだん苦しくなって、INPUTに列挙するようになった。INPUTへの列挙と、FILE_PATTERNSのパターンは併用できないようだ。INPUTを使うとなったら、すべて直書き。まー、しょう…

グルーピングはドキュメンテーションコメントじゃなくてもいい

グルーピング開きと閉じの特殊な括弧は、ドキュメンテーションコメントじゃなくてもいい。 //@{ // ... グループ範囲内 //@} でよい。通常のコメント内でもグループ範囲を解釈するようだ。ドキュメンテーションコメント内に置いても解釈されるが、'//@{', '/…

りんごかもしれない

テレビで紹介していた、評判の絵本。 りんごかもしれない

ハンガリアン記法、結局

ハンガリアン記法についてグダグダ考えた: 「ハンガリアン記法」検索 結局、使わないことにした。既存コードと関係するところでは使うが、新規では原則使わない。だけど、変数に接頭辞は使う。 ポインター変数にはp, 参照変数にはrを付ける。 これは、意味…

C++のテンプレート、どうすべ

僕は、幸か不幸か、強い制約があるプロジェクトってあんまりやったことない(幸だな)。昔、「再帰は禁止」という規則に出会ったことはある。理由は分かりにくくなってメンテナンスに支障がある、だった。ナニイッテンダ、と思った。スタックが少ないとかの…

名前空間エクスプローラー

どんなプログラミング言語でも広義の名前空間の概念はあるわけで、名前が所属する場所と可視性の構造を持つ。名前の静的スコーピング構造と言ってもいい。パッケージ、モジュール、クラスなんかが広義の名前空間(スコープ)を定義する。C++ならずばり「名前…

クラス宣言の実例

差し障りの無い実例を挙げる。今までは、ソース内にメモ書きだったものが、文書に入る。ソースのフォーマティングのための見出しも文書の構造として反映される。 //! ファイルシステムのノード(ディレクトリまたはファイル)の情報を表すクラス /*! 次の3つ…

クラス宣言の書き方

http://d.hatena.ne.jp/m-hiyama-memo/20160510/1462863099:tileのグルーピングを使うことを前提にする。 @nameディレクティブの引数は、日本語でも特殊文字でもいい。nameというよりむしろtitle @name、@{、@} の3つを使う。 ソースのフォーマティングのた…

メンバーのグルーピング

やっと、わかった。クラス内のメンバーをグルーピングするには、次のようにする。 //-------------------------------------------------- /*! @name 見出しは日本語でOK 必要があればここにもコメントできる。 */ //--------------------------------------…

Windows.hのmin/max さらに

min/max対策 - 檜山正幸のキマイラ飼育記 メモ編の続き。次のような定義があった。 #ifndef min # define min(x, y) ((x) < (y) ? (x) : (y)) #endif // min #ifndef max # define max(x, y) ((x) < (y) ? (y) : (x)) #endif // max これは: もともと、Wind…

設定のまとめ

全体的設定 PROJECT_NAME = "MyProject" GENERATE_LATEX = NO # HTMLしか要らない場合 EXTRACT_ALL = YES # コメントがない構成要素も出力 EXTRACT_PRIVATE = YES # privateも出力する GENERATE_TREEVIEW = YES # ツリービュー表示 出力ディレクトリ OUTPUT_…

DoxygenのMarkdownにおける目次とリンク

目次生成の[TOC]は認識しているが、まともに機能しない。 目次生成やセクションへのリンクには見出しにIDが必要。 IDを付けると見出しが消えてしまうバグがある。 したがって、見出しにIDを付けられず、目次やセクションへのも機能しない。 対処方法 参照す…

ルールの依存項目に注意

次のようなパターンルールを書いていた。 %.o : %.cpp %.h stdafx.h.gch @echo Making object file $(CXX) $(CXXFlags) -c $< これは、*.cppと*.hが揃ってないと発火しない。*.hがない*.cppだと、デフォルトルールが適用される。そうすると、コンパイラの名…