富士通

SOFTUNE FAQトップページへ

SOFTUNE FAQ(コンパイラ)

コンパイラに関する質問

  1. MS-C や Visual C++ 用に書かれたプログラムをコンパイルできますか?
  2. ANSI C言語規格に準拠しているのですか?
  3. EC++に対応していますか?
  4. どのようなライブラリが用意されていますか?
  5. long long をサポートしていますか?
  6. インラインアセンブラをサポートしていますか?
  7. Cソース中に割り込み処理を記述できますか?
  8. CソースファイルとC++ソースファイルを混在してコンパイルできますか?
  9. 環境変数は使用していますか?
  10. コンパイルオプションの優先順位について教えてください。
  11. ワーニングを抑止することはできますか?
  12. 実行性能を向上させる最適化オプションを教えて下さい。

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: インライン展開オプション