こんにちは、高木です。

今回もまたまたPHPでC言語の前処理を行う話題です。前回までで主立った内容は書いてしまったので、今回は簡単に済ませるつもりです。

PHPで前処理するためには、当然PHPの開きタグ(<?phpまたは<?=)と閉じタグ(?>)をC言語のソースコードに埋め込まなければなりません。開きタグは問題ないのですが、閉じタグはC言語の文法と微妙に干渉します。具体的には3文字表記がそれで、C言語では「??>」は「}」の意味になります。

現実に3文字表記を使うことはほとんどないとは思うのですが、何らかの事情で「??>」を書いていた場合、C言語の字句として解釈される前にPHPの閉じタグとして処理されてしまいます。多くの場合、PHPの実行時にエラーになるとは思いますが、たまたまエラーにならずに動いてしまうケースもありそうです。思わぬトラブルが起きないようにするには、コンパイルオプション等で3文字表示の使用を禁止できるなら禁止しておく方がいいでしょう。

ところで、PHP 5.xまではASP形式のタグも使えていました。すなわち、開きタグが「<%」で閉じタグが「%>」になります。これと同じ字句がC言語にもあり、2文字表記と呼ばれます。「<%」と「%>」はそれぞれ「{」と「}」に該当します。これからわざわざPHP 5.xをコマンドラインで使うこともないとは思いますが、念のため2文字表記の使用も避けた方が無難かと思います。

というわけで、今回は簡単でしたがこの辺りで終わりにします。