Top/Recent-articles
English | Japanese
English | Japanese

Menu

  • Top
  • Akihiko Yamaguchi 山口 明彦
  • Project プロジェクト
  • Text テキスト
  • Recent articles 最近の記事
  • Articles 記事一覧 (a to z)
  • Search 検索
Access: 4/10733 - Admin

Recent articles

最近の記事

< Past 20 pages | 81 to 100 | Next 20 pages >
2014-12-31
article/Define-inline-function-after-use

Can we define an inline function after where it is used

inline 関数を使用場所より後で定義してもいいか?

[c++]
2009-01-26

すぐ忘れるので,メモ. inline 関数は,先行宣言しておくことで,定義が使用場所より後にある場合でも問題なく使える.

... read more (article/Define-inline-function-after-use)
article/Removing-const-from-type-by-partial-specialization

Removing const from a type by partial specialization of template

Reading boost source code

テンプレートの部分特殊化を利用した const 除去型

~boost のソースを読む~

[c++][trick]
2009-01-21

過去記事「テンプレートの部分特殊化を利用した間接参照型推定」では,テンプレートのテンプレートの部分特殊化 (Wikipedia)を使ってポインタ型やイテレータ型からそれを間接参照した型(ポインタを取った型)を推定する方法を紹介した.この方法を使って,例えば和を求めるテンプレート関数の型引数をひとつ減らせられることを示した.しかしこの方法だけだと, const double 型の配列の要素を足し合わせようとしたときコンパイルエラーとなる.これを解決するための,ある型から const を除去した型を推定する方法を紹介する.ここで紹介するテクニックは,高度に抽象化されたテンプレート関数やテンプレートクラスを作るときに必要となる.ついでに, boost C++ ライブラリの remove_const の実装を読んでみよう.…正直,彼ら(boostの実装者たち)は変態さんだと思います.

... read more (article/Removing-const-from-type-by-partial-specialization)
2014-12-30
article/lexit-Exit-function-for-efficient-debug

lexit: Exit function to improve efficiency of debug

lexit: デバッグを効率化する終了関数

[c++]
2009-01-09

C/C++ で,エラーを検出してプログラムを強制終了する場合, exit(EXIT_FAILURE) とか abort() を使う.このうち abort() はコアを吐いてから終了してくれるから(linux の場合),コアを gdb などで解析することにより,デバッグが楽になる.例えば gdb a.out core として gdb を起動し, bt コマンドを使えば,バックトレースできる.しかし abort() による終了は穏便ではない.例えば, exit だとグローバルオブジェクトが破棄されるが, abort() だと破棄されない.そこで, success:正常終了, qfail:正常終了(エラーを返す), btfail:正常終了(バックトレースし,エラーを返す), abort:異常終了, df:デフォルト という4+1段階の終了オプションを選択できる終了関数 lexit を定義した.

ちなみにバックトレースとは,プログラムのスタックを表示すること.終了時点での関数から,呼び出しもとの関数を順に main までたどっていく.

... read more (article/lexit-Exit-function-for-efficient-debug)
article/Things-only-macros-can-do

Things only macros can do

When should we use macros?

マクロにしかできないこと ~C++でマクロを使うべきな場面~

[c++][trick]
2008-12-17

C++では, #define で定数を定義するな, const TYPE によるグローバル変数(もしくは適当な名前空間に内包されたグローバル変数)を使え, #define でマクロ関数を定義するな,代わりに inline 関数を使え,みたいなことが言われる.これは確かにその通りだ.

1項 #define ではなく, const と inline を使おう
Scott Meyers (スコット・メイヤーズ): Effective C++ (吉川訳, アスキー出版局, 1998)

に書いてあるように, プリプロセッサよりコンパイラに仕事させるべき だ.でもマクロにしかできないことも多々あるわけで.

... read more (article/Things-only-macros-can-do)
article/Assign-to-members-of-constant-struct-instance

Assign to member variables of a constant instance of a structure

Danger code and safe code

構造体のインスタンスが const で修飾されているとき メンバに値を代入する方法

~危険なコードと安全なコード~

[c++]
2008-12-08

適当な構造体 TTest のインスタンスが const で修飾されているとき(const TTest x),そのメンバに値を代入したい,でもそのためだけにそのインスタンス(x)から const を外すのは嫌,という場合を考えよう.あるいは const メンバ関数(メンバ変数を変更しないメンバ関数)で,テンポラリなメンバ変数を変更したい,でもそのメンバ関数を非 const にするのは嫌,という場合でもいい.結論から言えば, mutable を使うと解決できる.

... read more (article/Assign-to-members-of-constant-struct-instance)
article/Tricks-to-avoid-double-free

Tricks to avoid double free

メモリの二重解放回避テク

[c++][trick]
2008-12-05

メモリの二重解放とは, new などで確保したメモリ領域(ヒープ領域)を2回 delete などで解放することを言う. new と delete をきちんと対応させて書いていないときに起こる問題だ.特にクラスのメンバに動的確保したメモリへのポインタを含む場合にやってしまいがちである.ここでは二重解放によって発生する問題を解説する.

... read more (article/Tricks-to-avoid-double-free)
article/Can-function-return-void

Can a function return void?

void func1(..) を void func2(..) から return できるか検証

[c++]
2008-11-28

戻り値が void 型である関数 func1 を,戻り値が void 型であるほかの関数 func2 において,

  return func1(..);

のように返せるか実験してみた.

... read more (article/Can-function-return-void)
article/Script-to-convert-LaTeX-eqs-to-PNG-and-SVG

Script to convert LaTeX eqs to PNG and SVG

LaTeX の数式を PNG と SVG に変換するスクリプト

[latex][bash][trick]
2008-11-16

先日,LaTeX の数式を PNG と SVG に変換する方法についての記事を載せた.この方法を使いやすくスクリプト化してみた.

... read more (article/Script-to-convert-LaTeX-eqs-to-PNG-and-SVG)
article/Reduce-dependencies-btwn-files-liboctave

Reduce dependencies between files to be compiled

liboctave case

コンパイルするファイル間の依存性はできるだけ減らそう

~liboctaveへん~

[c++][liboctave]
2008-11-12

liboctave 利用時のコンパイルを「遅い」と感じたことはないだろうか.ここでは liboctave におけるヘッダファイルの依存関係を把握することにより,コンパイルを高速化する方法を検討する.

... read more (article/Reduce-dependencies-btwn-files-liboctave)
article/Estimating-dereferenced-type

Estimating dereferenced type by partial specialization of template

テンプレートの部分特殊化を利用した間接参照型推定

[c++][trick]
2008-11-09

C++の機能,テンプレートの部分特殊化 (Wikipedia)を使って,あるポインタ型orイテレータ型から,それを間接参照した(or逆参照した,orポインタをとっぱらった)型を推定する方法を紹介する.

... read more (article/Estimating-dereferenced-type)
article/Mimicking-2D-array-in-bash

Mimicking 2D array in bash

bashで2次元配列モドキ

[bash][trick]
2008-11-05

bash で2次元配列を扱いたいときがまれにある.が, bash には1次元配列しか無いし,配列の要素に配列を代入することもできない.そこで疑似的に2次元配列を使う方法を考えてみた.

... read more (article/Mimicking-2D-array-in-bash)
article/Inheritance-of-virtual-methods-and-default-parameters

Inheritance of virtual methods and default parameters

仮想関数の継承とデフォルトパラメータの関係

[c++]
2008-10-28

デフォルトパラメータを持つ仮想関数を継承する場合の振る舞いを調べてみた.仮想関数は「動的に結合」される一方,デフォルトパラメータは「静的に結合」される.

... read more (article/Inheritance-of-virtual-methods-and-default-parameters)
article/Name-elements-of-array

Name elements of array

配列の要素に名前をつける

[c++][trick]
2008-10-27

C/C++ で配列の各要素に名前をつける方法について.例えば,

unsigned char col[4];

として宣言された col の各要素を red, green, blue, alpha のような識別子でも参照できるようにする.

... read more (article/Name-elements-of-array)
article/Common-func-for-vector-ColumnVector-array

Common function for std::vector, liboctave ColumnVector, and arrays

std::vector, liboctave の ColumnVector, 配列に共通の関数

[c++][liboctave]
2008-10-24

STL (標準テンプレートライブラリ) の std::vector とか liboctave の ColumnVector,あるいは普通の配列に対して共通に使えるテンプレート関数の作り方を説明する.

... read more (article/Common-func-for-vector-ColumnVector-array)
article/Sharing-between-C-and-C++

Sharing functions and variables between C and C++

C と C++ の間で関数や変数を共有する

[c++][trick]
2008-10-19

C++ で実装した関数を C から利用したい場合,あるいはその逆の場合がある.同じソースの中に両方のプログラムコードを書くことはできないが,それぞれのソースをコンパイルしてオブジェクトファイルを生成し,それらをリンクすることは可能だ.ただし C++ 特有の名前空間 (namespace) や関数オーバーロードに対処する必要がある.

... read more (article/Sharing-between-C-and-C++)
article/List-broken-sym-links

List broken symbolic links

壊れたシンボリックリンクを一覧する

[linux][bash][trick]
2008-10-09

linux で,リンク先のファイルが存在しないシンボリックリンクを一覧するスクリプト.

... read more (article/List-broken-sym-links)
article/Preprocessor-warning-is-nonstandard

Preprocessor's #warning is nonstandard

プリプロセッサ #warning は非標準

[c++]
2008-10-06

ふと気になって,C++のプリプロセッサ・ディレクティブ (Preprocessing directives) を調べてみた.ソースは ISO/IEC 14882:1998 (E).gcc/g++ で何気なく使っていた #warning は標準じゃないことを知った.

... read more (article/Preprocessor-warning-is-nonstandard)
article/Compile-and-install-Gnuplot

Compile and install Gnuplot

Gnuplot のコンパイルとインストール

[linux][bug]
2008-10-04

Gnuplot (4.2.4) は,ライセンスの関係がどうとかで readline がデフォルトでは使えない.このためコマンドプロンプト上でファイルを Tab キーとかで補完できないので不便だ.そこで自分でコンパイルする.

... read more (article/Compile-and-install-Gnuplot)
article/Colored-text-to-stdout

How to print a colored text to stdout?

端末に色つきテキストを出力する

[c++][trick][linux]
2008-10-01

iomanip の setw(5) みたいなノリで,出力する文字に色をつける方法を考える.

  cout<<ioscc::green<<"GREEN"<<endl;

のようにすれば,緑色で GREEN が表示されるようにしたい. std::endl で色がリセットされる.

... read more (article/Colored-text-to-stdout)
article/LaTeX-eqs-to-PNG-and-SVG

Convert LaTeX equations to PNG and SVG

LaTeX の数式を PNG と SVG に変換する

[latex][trick][linux]
2008-09-24

似たような話題は検索すればいくらでも見つかる.が,イマイチなのが多い(ような気がする).ここでは日本語とかも出力できる方法を解説する.かなり力技なので環境依存性が強いかも.

... read more (article/LaTeX-eqs-to-PNG-and-SVG)
< Past 20 pages | 81 to 100 | Next 20 pages >

Last-modified:2015-01-04 (Sun) 22:03:53 (3780d)
Link: MenuBar(2844d) Top(2845d) article/Estimating-dereferenced-type(3785d) article/LaTeX-eqs-to-PNG-and-SVG(3785d)
Site admin: Akihiko Yamaguchi.
Written by: Akihiko Yamaguchi.
System: PukiWiki 1.5.0. PHP 5.2.17. HTML conversion time: 0.028 sec.