-strict_std 【V1.07.00以降】


Cソース・プログラムを言語規格に厳密にあわせて処理します。

[指定形式]

-strict_std 【V1.07.00以降】
-Xansi      【V1.06.00以前との互換用途】

 

-

省略時解釈

従来のC言語の仕様との両立性を持たせ,警告を出力して処理を続行します。-lang=c99オプションを指定していない場合でも,C99で追加された仕様の一部も受容します。

[詳細説明]

-

Cソース・プログラムを-langオプションで指定した言語規格に厳密にあわせて処理し,規格に反する記述に対してエラーや警告を出力します。

-

本オプション指定時,または未指定時に有効になる既定義マクロは,「4.1.3 処理系定義 (36) あらかじめ定義されるマクロ名」を参照してください。

-

言語規格に厳密なコンパイル時の処理は,以下のようになります。

-

C90準拠時

-

ビット・フィールド

ビット・フィールドにint,signed int, unsigned int型以外の型を指定した場合は,エラーとなります。

本オプションを指定しない場合は,int型以外の型の指定を許可します(警告は出力しません)。

-

#行番号

エラーとなります。

本オプションを指定しない場合は,“#line 行番号”と同様に扱います。

-

#pragma inline指定された関数の引数

指定した関数の呼び出しと定義の間で,戻り値の型や引数の型が異なるが型変換が可能である場合は,エラーとなります。

本オプションを指定しない場合は,戻り値の型は呼び出し側の型に,引数は関数定義での型に変換して,インライン展開を行います。

-

基本型

_Bool,long long,unsigned long long,__fp16型をエラーとします。

-

構造体指定子,共用体指定子

メンバ宣言並びが名前付のメンバを含まない場合,意味を持たない旨のエラーメッセージを出力します。

-

C99準拠時

-

# 行番号

エラーとなります。

本オプションを指定しない場合は,“#line 行番号”と同様に扱います。

-

#pragma inline指定された関数の引数

指定した関数の呼び出しと定義の間で,戻り値の型や引数の型が異なるが型変換が可能である場合は,エラーとなります。

本オプションを指定しない場合は,戻り値の型は呼び出し側の型に,引数は関数定義での型に変換して,インライン展開を行います。

-

基本型

__fp16型をエラーとします。

-

構造体指定子,共用体指定子

メンバ宣言並びが名前付のメンバを含まない場合,エラーとします。