プログラミングtips

基本的なお役立ち情報 とか.主にCとPerl.

[Linux] シェルから拡張子を取り除いたファイル名を取得する(Bash)

  • abc.txt から abc のみを得たい場合
  • ワイルドカードを利用したforループをするとき等に便利
  • 例: カレントディレクトリに「abc.txt」「def.txt」「ghi.txt」が存在する場合
    $ for file in *.txt
    > do
    > echo ${file%.*}
    > done
    変数名の隣に「%.*」を加えることで拡張子を取り除くことができる
    abc
    def
    ghi
  • 参考: bashスクリプトだけで、ファイル名、拡張子を取得する - 作業ノート : http://d.hatena.ne.jp/te2u/20090327/p1

[C] Windows x64 + MinGW + gcc で long double の挙動がおかしい?

  • MinGW + gcc 環境で,long double 型の変数を printf するとおかしい数値が表示される問題.( 19690185614481596000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000とか)
  • 原因は MinGW が Microsoft の msvcrt.dll に依存していて,long double を double と同じビット数であると認識してしまうことによるもの.
  • 解決策として,printf を __mingw_printf に書き換えればOK
    #define printf __mingw_printf
    とする.
  • 参考: c - printf and long double - Stack Overflow : http://stackoverflow.com/questions/4089174/printf-and-long-double

[Others][Lisp] xyzzy でバックアップファイルをひとまとめにする

  • 愛用テキストエディタのxyzzy http://www.jsdlab.co.jp/~kamei/ について
  • バックアップファイルを自動で作ってくれるが,デフォルトの状態だとソースファイルと同じディレクトリにバックアップを作ってしまう
  • これを一つのディレクトリにまとめられればディレクトリの中身がすっきり
    ;バックアップ - 外部 lisp は不要
    (require "backup") 
    (setq *hierarchic-backup-directory* t)
    
    ;バックアップを取る場所を指定 in .xyzzy
    (setq *backup-directory* "C:/backup/")
    とする. ちなみに,上記設定ではソースまでのディレクトリ階層もミラーリングするため,それが嫌な人は
    (setq *hierarchic-backup-directory* nil)
    とすればよい.
  • 参考: 初心者による xyzzy 設定紹介 その1 - 教えて!Turing先生 : http://d.hatena.ne.jp/turing_pattern/20080630/1214838334

[C] ちゃんとしてるけどリンク時に Undefined reference が出る

  • gcc (g++) によるリンク時に

    undefined reference to `_imp__pthread_mutex_lock'

    といったエラーが出て先に進めない時.
  • 上記の場合,pthreadというライブラリをリンクしていない際に起きる
    • でもgccのコマンドライン上ではきちんと -lpthread 付けてリンクさせてる
  • そういう時は順番が問題かも.特に複数のライブラリをリンクさせてる時など
    • ✕ gcc -o test test.o -lm -lpthread -lspecial
    • ◯ gcc -o test test.o -lm -lspecial -lpthread
      • 例では「libspecial」というライブラリが「libpthread」を利用しているからリンクさせてる例
    • この場合必要なライブラリは後ろに置くのが鉄則
    • 「libspecial」が「libpthread」を参照するので「libpthread」は「libspecial」の後ろ
  • 参考: Linker errors in compiling a simple pthread code under MingW - Stack Overflow: http://stackoverflow.com/questions/10213635/linker-errors-in-compiling-a-simple-pthread-code-under-mingw

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-02-27 (木) 18:55:54 (3705d)