SOFTUNE FAQ(コンパイラ)
コンパイラに関する質問
- MS-C や Visual C++ 用に書かれたプログラムをコンパイルできますか?
- ANSI C言語規格に準拠しているのですか?
- EC++に対応していますか?
- どのようなライブラリが用意されていますか?
- long long をサポートしていますか?
- インラインアセンブラをサポートしていますか?
- Cソース中に割り込み処理を記述できますか?
- CソースファイルとC++ソースファイルを混在してコンパイルできますか?
- 環境変数は使用していますか?
- コンパイルオプションの優先順位について教えてください。
- ワーニングを抑止することはできますか?
- 実行性能を向上させる最適化オプションを教えて下さい。
Q1. MS-CやVisual C++ 用に書かれたプログラムをコンパイルできますか?
ANSI C言語規格に沿ったプログラムはコンパイル可能ですが、Microsoft社の拡張言語仕様(_int64など)には、対応しておりません。また、ターゲット環境に依存するライブラリ(time.hなど)はサポートしておりません。C言語仕様チェックについては、Cチェッカをご利用下さい。
Q2. ANSI C言語規格に準拠しているのですか?
厳密にANSI C規格に合致する「完全ANSI」と、ANSI C規格に追加して富士通製MPU/MCU用拡張仕様に合致する「ANSI準拠」の2つのモードがあります。
Q3. EC++ に対応していますか?
対応しています。C/C++コンパイラは標準でEC++仕様を採用しています。
Q4. どのようなライブラリが用意されていますか?
CコンパイラではC言語標準ライブラリを、C++コンパイラではEC++ライブラリを提供しています。
Q5. long long をサポートしていますか?
FR-VファミリーC/C++コンパイラのみ64ビット整数型としてlong long型をサポートしています。その他のコンパイラではサポートしていません。
Q6. インラインアセンブラをサポートしていますか?
サポートしています。#pragma asm/endasmによる記述と、組み込み関数_asm()による記述が可能です。
Q7. Cソース中に割り込み処理を記述できますか?
_interrupt型修飾子を使うことで、割り込み関数を記述することができます。割り込み関数は割り込みベクタテーブルを介して呼び出されますが、#pragma intvectや#pragma defvectによりベクタテーブルの生成機能もあります。但し、FR-VファミリーC/C++コンパイラではサポートされておりません。
Q8. CソースファイルとC++ソースファイルを混在してコンパイルできますか?
C/C++コンパイラでは拡張子(.c .cpp)によりソースファイルがCかC++かを判断します。C++ソースファイルからCの関数を呼び出す際にはリンケージ指定extern "C" が必要です。
Q9. 環境変数は使用していますか?
製品本体のインストールディレクトリの指定や、コンパイル時のインクルードやライブラリ、作業ファイル用の ディレクトリを指定することが出来ます。
Q10. コンパイルオプションの優先順位について教えてください。
後に指定されたオプションが有効になります。
Q11. ワーニングを抑止することはできますか?
-w0 オプションにより抑止することができます。
Q12. 実行性能を向上させる最適化オプションを教えて下さい。
アプリケーションによって最適化効果は異なりますが、一例として次のようなオプションを用意しています。
-K SIZE: サイズ優先
-K SPEED: 速度優先
-x func: インライン展開オプション
