since 2007.8 by K-ichi

C言語系では/*~~*/、htmlなら<!--~~-->、M80アセンブラ(pdf資料)なら.comment <delim>~~<delim>など、まとまったコメントを扱う手段がある。
複数行コメント(マルチラインコメント、ブロックコメント)は、単に文章を書くほかに、一部コードをコメントアウトするようなことにも使う。
ところが、PICのアセンブラ、MPASMにはその機能が無い。代用法がネット上にあったので、日本語で備忘としておく。

● if文
    if 0
    movf    INDF,w
    call    subRoutine  ;プログラムでもコメントでも
生のテキストでも何でもOK
    endif
if文で条件不成立の状態を作れば、その中身はまるごと無視される。
MPASMでのif文は、0=偽、らしい。「if 1==0」のように、ひと目で偽と判る書き方でも可。
なおif文は、1文字目に書くと「Found directive in column 1. (if)」というワーニングが出る。

● #ifdef文
#ifdef hoge
    movf    INDF,w
    call    subRoutine  ;プログラムでもコメントでも
生のテキストでも何でもOK
#endif
#ifdefでも同様なことができる。
このプロジェクト内で、「hoge」というラベルが定義されてないことが必要。
#ifdefは、1文字目に書ける。

● /*..*/ (じつは使えない)
/*
    movf    INDF,w
    call    subRoutine  ;プログラムでもコメントでも
生のテキストでも何でもOK
*/
C言語と同じ記述だが使えない。
エディタ上ではコメント行として扱われ、コメント行の色に変わる。しかしアセンブルすると、コメントアウトされずにエラーになる。
エディタのバグ、という声もあるが、C言語らも扱う統合環境下のエディタなので仕方ないかも。


ここでの表示色は、MPLAB Xと同じにしてある。
前者2つは機能するが、見た目は変わらない。見通せないほど大きなブロックをコメントアウトする場合には、思わぬミスを誘発しかねない。
各2行記述になって少々ウザいが、最後者も併用して見た目も変えた方がいいかもしれない。
#ifdef hoge
/*
    movf    INDF,w
    call    subRoutine  ;プログラムでもコメントでも
生のテキストでも何でもOK
*/
#endif

エレガントな記述法は、随時募集中。
景品はありません。

0 件のコメント:

コメントを投稿

.

関連記事


この記事へのリンク by 関連記事、被リンク記事をリストアップする」記事

ブログ アーカイブ