FAQ

QA・C/QA・C++

QA·C/QA·C++に関する

ID.8

Q. 「非 C99 リテラル拡張ルールを使う(-duc99dilt+)」オプションの設定基準を教えてください。 QAC++2.1J以上

A.


コンパイラの中には、C99言語規格に従って、LONG_MAX よりも大きな10進定数を long long 型として 扱うものと、既存のC++言語規格に従って unsigned long long 型 として扱うものがあります。

お使いのコンパイラが、後者の挙動をする場合は、 「非 C99 リテラル拡張ルールを使う(-duc99dilt+)」オプションをオフ(-duc99dilt-)に設定する必要があります。 前者の場合は、デフォルト(-duc99dilt+)のままにします。

具体的には、お使いのコンパイラが次のソースコードをエラーなく コンパイルできる場合は、-duc99dilt-オプションを設定する必要があります。 // Error ==> -duc99dilt+ (default) // Success ==> -duc99dilt- void foo(int i) {} void foo(unsigned long i) {} void bar(void) { foo(4294967295); // Problem } int main(void) { return 0; }なお、設定方法は次の通りです。

  [コンパイラ パーソナリティ] の [拡張] タブで
  [非 C99 リテラル拡張ルールを使う]
  チェックボックスを非選択にします。

設定ファイルを直接編集する場合:
  -duc99dilt- と記述します。

<< QA·C/QA·C++に関するに関するFAQ一覧へ戻る