実際のソース・ファイル名サフィックスとは関係なく、すべてのソース・ファイルを、このオプションによって指定されたソース・タイプであるかのように処理することをコンパイラーに指示する。
.-default---. >>- -q--sourcetype--=--+-c---------+--------------------------->< +-c++-------+ '-assembler-'
ここで、
default コンパイラーは、ソース・ファイルのプログラム言語がそのファイル名サフィックスによって暗黙指定されているものと見なします。 c コンパイラーは、このオプションに従い、すべてのソース・ファイルを C 言語ソース・ファイルであるかのようにコンパイルします。 c++ コンパイラーは、このオプションに従い、すべてのソース・ファイルを C++ 言語ソース・ファイルであるかのようにコンパイルします。 assembler コンパイラーは、このオプションに従い、すべてのソース・ファイルをアセンブラー言語ソース・ファイルであるかのようにコンパイルします。
-qsourcetype オプションは、 -+ オプションと共に使用してはいけません。
-qsourcetype オプションはコンパイラーに対し、ファイル名サフィックスに依存するのではなく、ソース・タイプをオプションによって指定されたものと見なすように指示します。
通常、コンパイラーは、コマンド行で指定されたソース・ファイルのファイル名サフィックスを使用して、ソース・ファイルのタイプを判別します。例えば、 .c サフィックスは通常 C ソース・コードを暗黙指定し、 .C サフィックスは通常 C++ ソース・コードを暗黙指定し、コンパイラーはそれらを以下のように処理します。
- hello.c
- ファイルは C ファイルとしてコンパイルされます。
- hello.C
- ファイルは C++ ファイルとしてコンパイルされます。
これは、ファイル・システムが大/小文字を区別するかどうかにかかわらず適用されます。しかし、大/小文字を区別しないファイル・システムでは、上記の 2 つのコンパイルは同じ物理ファイルを参照します。つまり、コンパイラーは、まだコマンド行上のファイル名引き数の大/小文字の違いを認識し、それに応じてソース・タイプを判別しますが、ファイル・システムからファイルを取り出すときに、大/小文字の区別を無視します。
ソース・ファイル hello.C を C 言語ソース・ファイルとして処理するには、以下を入力します。
xlc -qsourcetype=c hello.C