MacOSXでmallocを使うときは、malloc.hではなくstdlib.hをインクルードします。
malloc.hをインクルードしようとしても、/usr/includeにmalloc.hは存在しないのでNo such file or directoryエラーが出ます。
/usr/include/sys/とか/usr/include/mallocにmalloc.hがあるのでそちらにパスを通す手もありますが、OSXというかFreeBSDではmalloc.hでなくstdlib.hをインクルードすべきとされています。
2011年10月8日土曜日
2011年9月13日火曜日
XCode4でgoogletestを使う方法
GoogleのC++テストフレームワークgoogletestをXCode4で使う方法です。
静的ライブラリlibgtest.aをビルドして使います。
実行環境
googletestのページから安定版をダウンロードします。
静的ライブラリlibgtest.aをビルドして使います。
実行環境
- Mac OSX version10.7.1
- XCode version4.1
- gcc version4.2.1
- googletest version1.6.0
1.google testをダウンロード
loading..
2011年9月11日日曜日
テンプレート関数の分割コンパイル
テンプレート関数をヘッダとソースに分割してコンパイルする方法です。
通常、テンプレート関数はヘッダとソースを同じファイルに書きます。分割して書くには、二つの方法があります。
1.ソースファイルをインクルードする
ヘッダファイル内でソースファイルをインクルードします。
参照が循環してしまうので、ソースにもインクルードガード(ifndef〜)を書きます。
ヘッダファイル linktest.h
ソースファイル linktest.cpp
ただし、このようにすると、これを利用する側で常にヘッダとソース両方が必要になってしまいます。
例えばこの方法でビルドしたライブラリをつくります。 そのライブラリを使うクライアント側に、ヘッダだけでなくソースファイルも渡してあげないとインクルードエラーがでます。
2.ソースの最後に個別のクラステンプレートを書く
ソースの最後に個別にクラス指定した関数を書きます。
ヘッダファイル linktest2.h
ソースファイル linktest2.cpp
こちらの場合は1番のようにソースが常に必要となる問題はありません。
しかし、ソースの最後に使う全てのクラスでの組合せを書かないといけないので、ちょっと大変です。上の例ではintとdoubleしか書いていませんが、floatなど必要なものは全て書く必要があります。
参考
1番の方法はこちらを参考にしました。
2番の方法はこちらを参考にしました。
XCode4でターゲットを追加する方法
プロジェクトにターゲットを追加する方法です。2つやり方があります。
1.Fileメニューから追加
File→New→New Targetから追加します。
2.プロジェクト設定画面から追加
2つの赤枠のうち、どちらかをクリックして、
下側にあるAdd Targetをクリックして追加します。
ターゲットの変更方法
ターゲット名をクリックして、
変更したいターゲットを選びます。
2011年8月22日月曜日
pythonで辞書のサブセットをcsvに変換
辞書のキーのうち必要なものだけをcsvで書き出します。
id, height, width, weightの辞書リストから、id, height, widthだけのcsvをつくっています。
paramnamesにid, height, widthを指定しているので、
というcsvができます。weightは指定していないので書き出されません。
辞書のサブセットをcsv化する方法は、
csv.DictWriterでextrasaction='ignore'にすると全パラメータを使わなくてもエラーをはきません。(ignoreしてますからね・・・)
DictWriterでヘッダを追加する方法はこちらを参考にしました。
id, height, width, weightの辞書リストから、id, height, widthだけのcsvをつくっています。
import csv outpath = '/path/to/csv' paramnames = ['id','height','width'] rows = [{'id':0,'height':10,'width':5,'weight':3},{'id':1,'height':3,'width':7,'weight':9}] header = dict([(val,val)for val in paramnames]) with open(outpath, mode='w') as f: rows.insert(0,header) writer = csv.DictWriter(f, paramnames, extrasaction='ignore') writer.writerows(rows)
paramnamesにid, height, widthを指定しているので、
id | height | width |
---|---|---|
0 | 10 | 5 |
1 | 3 | 7 |
辞書のサブセットをcsv化する方法は、
csv.DictWriterでextrasaction='ignore'にすると全パラメータを使わなくてもエラーをはきません。(ignoreしてますからね・・・)
DictWriterでヘッダを追加する方法はこちらを参考にしました。
登録:
投稿 (Atom)