2016-05-01から1ヶ月間の記事一覧
間違えやすい仕様も含まれる。 前後に空白なしの `hoge` は認識されないで、生タグ(ttタグ)が見えてしまう。 preブロックへの言語指定 ```hoge が場所によってエラーする 連続するpreブロックがあると、二番目は認識されない。 句点の直後に空白を忘れて自…
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++の構文を知らないアホタレだ。なのに、言語処理系全体としては、このアホタレに強く依存している。結果として全体がアホタレになってしまっている。 メモリ管理がうざい。バ…
対処法は分かったが理由がサッパリ分からない謎の現象。これを詮索している余裕がないので、とりあえず起きたことを記しておく。後で再現できるかどうかは分からない。まず、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の入力は FILE_PATTERNSにワイルドカードを書いていたが、だんだん苦しくなって、INPUTに列挙するようになった。INPUTへの列挙と、FILE_PATTERNSのパターンは併用できないようだ。INPUTを使うとなったら、すべて直書き。まー、しょう…
グルーピング開きと閉じの特殊な括弧は、ドキュメンテーションコメントじゃなくてもいい。 //@{ // ... グループ範囲内 //@} でよい。通常のコメント内でもグループ範囲を解釈するようだ。ドキュメンテーションコメント内に置いても解釈されるが、'//@{', '/…
テレビで紹介していた、評判の絵本。 りんごかもしれない
ハンガリアン記法についてグダグダ考えた: 「ハンガリアン記法」検索 結局、使わないことにした。既存コードと関係するところでは使うが、新規では原則使わない。だけど、変数に接頭辞は使う。 ポインター変数にはp, 参照変数にはrを付ける。 これは、意味…
僕は、幸か不幸か、強い制約があるプロジェクトってあんまりやったことない(幸だな)。昔、「再帰は禁止」という規則に出会ったことはある。理由は分かりにくくなってメンテナンスに支障がある、だった。ナニイッテンダ、と思った。スタックが少ないとかの…
どんなプログラミング言語でも広義の名前空間の概念はあるわけで、名前が所属する場所と可視性の構造を持つ。名前の静的スコーピング構造と言ってもいい。パッケージ、モジュール、クラスなんかが広義の名前空間(スコープ)を定義する。C++ならずばり「名前…
差し障りの無い実例を挙げる。今までは、ソース内にメモ書きだったものが、文書に入る。ソースのフォーマティングのための見出しも文書の構造として反映される。 //! ファイルシステムのノード(ディレクトリまたはファイル)の情報を表すクラス /*! 次の3つ…
http://d.hatena.ne.jp/m-hiyama-memo/20160510/1462863099:tileのグルーピングを使うことを前提にする。 @nameディレクティブの引数は、日本語でも特殊文字でもいい。nameというよりむしろtitle @name、@{、@} の3つを使う。 ソースのフォーマティングのた…
やっと、わかった。クラス内のメンバーをグルーピングするには、次のようにする。 //-------------------------------------------------- /*! @name 見出しは日本語でOK 必要があればここにもコメントできる。 */ //--------------------------------------…
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_…
目次生成の[TOC]は認識しているが、まともに機能しない。 目次生成やセクションへのリンクには見出しにIDが必要。 IDを付けると見出しが消えてしまうバグがある。 したがって、見出しにIDを付けられず、目次やセクションへのも機能しない。 対処方法 参照す…
次のようなパターンルールを書いていた。 %.o : %.cpp %.h stdafx.h.gch @echo Making object file $(CXX) $(CXXFlags) -c $< これは、*.cppと*.hが揃ってないと発火しない。*.hがない*.cppだと、デフォルトルールが適用される。そうすると、コンパイラの名…