2010-12-08-01-SVG と UML の話 - 11 - project-enigma

2010-12-08-01-SVG と UML の話 - 11

>> Site top >> weblog >> 月別アーカイブ >> 2010年12月のlog >> 2010-12-08-01-SVG と UML の話 - 11

最終更新日付:2013/12/31 07:35:45


SVG と UML の話 - 11

2010 年 12 月 08 日

残るプリプロセッサディレクティブと言えば、条件付きコンパイルのためのあれだ。

前回、#include によるヘッダファイルの取り込みについて書いた。これでファイル間で共有する内容をヘッダファイルで一元管理できるようになったわけだが、なんらかの条件によって少しだけ内容を変えたい場合もある。例えば、このツールを使って自分でドキュメントを書く場合、トップページ以外にはトップページにジャンプするためのリンクを配置している(リンクについては改めて書こう)。しかし、トップページは1つだがそれ以外のページはたくさんあるのが普通だから、その情報はヘッダファイルに入れておきたい。となると、現在処理しているのがトップページかどうかをヘッダファイルの中で判定する必要がある。

もちろん、その部分だけ別のヘッダファイルにして選択的にインクルードするのも1つの方法だろう。しかし、#define や #include と同じプリプロセッサでの解決方法がある。それを模倣しない手はないだろう。それは #ifdef 〜 #endif による条件ブロックだ。

まず最初に、トップページにだけ TOP_PAGE というシンボルを導入しよう。このシンボルの有無がヘッダファイルに影響するため、#include よりも先に書く必要がある。

//index.txt
#include common.h
  :
  :

そして、ヘッダファイルでは TOP_PAGE というシンボルが「define されていない」場合にのみリンクを表示する。そのため、ここでは #ifndef TOP_PAGE としている。

//common.h
  :
  :

大体こんなところだろうか。ちなみに、条件ブロックに使えるのは(現時点つまりこれを書いている時点)で以下の4つだけだ。つまり #if などはサポートしていない。

最後に、おまけとしてリンクがどのように書かれるかを以下に示しておこう。細かい話は抜きで、最後の link 属性によってこのテキストがリンクになる。

text
position:$PAGEWIDTH,30,- $PAGEHEIGHT,30,-
align:BR
description:
back to top
color:blue
underline:true
link:index.svg

さて、次回は‥‥‥何を書こうかな。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.