AdLint 3.2.14 利用者ガイド


Next: , Up: (dir)

導入

AdLint とは

AdLint は、オープンソースのソースコード静的解析ツールです。

AdLint は、ソースコード中の安全性や移植性に欠ける部分について警告メッセージを出 力し、また、同時にさまざまな品質メトリクスを測定することができます。

活用事例の一部は、付録のスクリーンショットでご確認いただけま す。

AdLint は、(現時点では) ANSI C89 / ISO C90 / 一部 ISO C99 規格に準拠した C 言語 のソースコードを解析することができます。

AdLint は Ruby で実装されているため、Windows、 Mac OS X、GNU/Linux、FreeBSD など Ruby がサポートする全てのプラットフォームで利 用することができます。

ライセンス

Copyright (C) 2010-2014, OGIS-RI Co.,Ltd.

AdLint is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

AdLint is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with AdLint. If not, see <http://www.gnu.org/licenses/>.

目次


Next: , Previous: Top, Up: Top

1 インストール


Next: , Up: Installation

1.1 動作要件

AdLint の使用には、Ruby バージョン 1.9.3-p0 以降のインストールが必要です。

また、adlintize コマンドによって作成する解析 自動化 GNUmakefile を使用するために、GNU Make バージョン 3 以降のインス トールをお勧めします。


Next: , Previous: Requirements, Up: Installation

1.2 ハードウェア環境

推奨ハードウェア環境は、解析対象ソフトウェアの規模により一概には規定できません が、参考情報として AdLint のテスト環境と実際に計測した解析時間を紹介します。

1.2.1 MS Windows

MS Windows XP (SP3) 上でのテストは Intel Core i5 3.33GHz (660)、物理メモリ 2 GB の環境で行っています。

この環境で Ruby 1.9.3-p0 (ビルド対象の総物理行数 62 万行) を解析した場合、下記 の解析時間を要しました。

1.2.2 GNU/Linux

Fedora 14 上でのテストは Intel Core2 Duo 2.20GHz (E4500)、物理メモリ 3.4 GB の 環境で行っています。

この環境で Ruby 1.9.3-p0 (ビルド対象の総物理行数 62 万行) を解析した場合、下記 の解析時間を要しました。


Next: , Previous: Hardware Environment, Up: Installation

1.3 MS Windows 環境へのインストール手順

1.3.1 Ruby のインストール

RubyInstaller for Windowsダウンロードページから 1.9.3-p0 以 降のバージョンの RubyInstaller を入手します。

RubyInstaller を実行し、インストーラの指示に従い Ruby をインストールします。

1.3.2 DEVELOPMENT KIT (DevKit) のインストール

GNU Make を含む DEVELOPMENT KIT (DevKit) のインストールを推奨します。

RubyInstaller for Windows で配布されている DEVELOPMENT KIT (DevKit) をダウンロ ードページから入手します。

DevKit-*.exe を実行すると、DEVELOPMENT KIT が指定したディレクトリに展開 されます。

1.3.3 PATH 環境変数の設定

Ruby のインストール でインストールした Ruby ディレ クトリ中の binDEVELOPMENT KIT (DevKit) のインスト ール で展開した DevKit ディレクトリ中の binmingw\binPATH 環境変数に追加してください。

1.3.4 AdLint のインストール

コマンドプロンプトを起動し、下記のコマンドにより AdLint の最新バージョンをダウ ンロードしインストールします。

> gem install adlint --no-rdoc --no-ri

HTTP プロキシを使用する場合は、下記のように gem コマンドに --http-proxy http://ユーザ:パスワード@プロキシホスト:ポート番号 を指 定します。

> gem install adlint --no-rdoc --no-ri --http-proxy http://user:passwd@proxy:3128


Next: , Previous: Install On Windows, Up: Installation

1.4 Unix 環境へのインストール手順

Ruby インストールガイド に従い、Ruby インタプリタをインストールします。

その後、下記のコマンドにより AdLint の最新バージョンをダウンロードしインストー ルします。

% gem install adlint
または、
% sudo gem install adlint

HTTP プロキシを使用する場合は、gem コマンドに --http-proxy http://ユーザ:パスワード@プロキシホスト:ポート番号 を指定します。


Previous: Install On Unix, Up: Installation

1.5 動作テストと AdLint の試用

AdLint には小さなサンプルの C 言語プロジェクトが付属しています。 下記の手順で、intro_demo プロジェクトを用いて AdLint の動作テストを行っ てください。

intro_demo プロジェクトをユーザのワークスペースへコピーします。

% cp -r `adlint --prefix`/share/demo/intro_demo .

adlintize コマンドにより、静的解析のための設 定ファイルを生成します。

% cd intro_demo
% adlintize

下記のファイルが出力されます。

GNU Make バージョン 3 以降がインストール済みの場合、下記のコマンドにより解析す ることができます。

% make verbose-all
adlint --verbose -t adlint_traits.yml -o . intro_demo.c
                  intro_demo.c [fin] |============================| 0.401s
                    intro_demo [fin] |============================| 0.029s
  1.125s user, 0.765s system, 00:00:01.89 total

GNU Make をインストールしていない場合は、下記のように直接 adlint コマンドを使用してください。

% adlint -v -t adlint_traits.yml -l adlint_files.txt
                  intro_demo.c [fin] |============================| 0.401s
                    intro_demo [fin] |============================| 0.029s
  1.125s user, 0.765s system, 00:00:01.89 total

解析処理が正常に終了すると、下記のファイルが出力されます。

intro_demo.c.msg.csv の内容は、「いくつかの文に制御が到達しないこと」と 「いくつかの文でゼロによる除算が発生すること」などを示しているはずです。


Next: , Previous: Installation, Up: Top

2 サンプルセッション


Next: , Up: Sample Session

2.1 GNU Screen の解析

2.1.1 プロジェクトの準備

ftp://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz をダウンロードし、適当 なディレクトリに展開します。

% wget ftp://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz
Length: 840602 (821K) [application/x-tar]
Saving to: `screen-4.0.3.tar.gz'

100%[======================================>] 840,602     --.-K/s   in 0.1s

2011-09-28 11:41:55 (6.18 MB/s) - `screen-4.0.3.tar.gz' saved [840602/840602]

% tar xzf screen-4.0.3.tar.gz
% ls -F
screen-4.0.3/   screen-4.0.3.tar.gz

2.1.2 プロジェクトの調査

GNU Screen を実際にビルドすることで、解析を実行する環境でどのようにビルドされる かを確認します。

% cd screen-4.0.3
% ./configure
this is screen version 4.0.3
checking for prefix by checking for screen... /usr/bin/screen
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
...snip...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating config.h
config.status: executing default commands

Now please check the pathnames in the Makefile and in the user
configuration section in config.h.
Then type 'make' to make screen. Good luck.

% make 2>&1 | tee make.log
CPP="gcc -E " srcdir=. sh ./osdef.sh
AWK=gawk CC="gcc -g -O2" srcdir=. sh ./comm.sh
AWK=gawk srcdir=. sh ./term.sh
gcc -c -I. -I.    -g -O2 screen.c
gcc -c -I. -I.    -g -O2 ansi.c
gcc -c -I. -I.    -g -O2 fileio.c
gcc -c -I. -I.    -g -O2 mark.c
gcc -c -I. -I.    -g -O2 misc.c
gcc -c -I. -I.    -g -O2 resize.c
gcc -c -I. -I.    -g -O2 socket.c
gcc -c -I. -I.    -g -O2 search.c
sh ./tty.sh tty.c
gcc -c -I. -I.    -g -O2 tty.c
gcc -c -I. -I.    -g -O2 term.c
gcc -c -I. -I.    -g -O2 window.c
gcc -c -I. -I.    -g -O2 utmp.c
gcc -c -I. -I.    -g -O2 loadav.c
gcc -c -I. -I.    -g -O2 putenv.c
gcc -c -I. -I.    -g -O2 help.c
gcc -c -I. -I.    -g -O2 termcap.c
gcc -c -I. -I.    -g -O2 input.c
gcc -c -I. -I.    -g -O2 attacher.c
gcc -c -I. -I.    -g -O2 pty.c
gcc -c -I. -I.    -g -O2 process.c
gcc -c -I. -I.    -g -O2 display.c
gcc -c -I. -I.    -g -O2 comm.c
gcc -c -I. -I.    -g -O2 kmapdef.c
gcc -c -I. -I.    -g -O2 acls.c
gcc -c -I. -I.    -g -O2 braille.c
gcc -c -I. -I.    -g -O2 braille_tsi.c
gcc -c -I. -I.    -g -O2 logfile.c
gcc -c -I. -I.    -g -O2 layer.c
gcc -c -I. -I.    -g -O2 sched.c
gcc -c -I. -I.    -g -O2 teln.c
gcc -c -I. -I.    -g -O2 nethack.c
gcc -c -I. -I.    -g -O2 encoding.c
gcc  -o screen screen.o ansi.o fileio.o mark.o misc.o resize.o socket.o
search.o tty.o term.o window.o utmp.o loadav.o putenv.o help.o termcap.o
input.o attacher.o pty.o process.o display.o comm.o kmapdef.o acls.o braille.o
braille_tsi.o logfile.o layer.o sched.o teln.o nethack.o encoding.o -lcurses
-lcrypt

2.1.3 静的解析の準備

adlintize コマンドを使い、静的解析に必要なフ ァイルの雛形を作成し、対象プロジェクトに応じて設定ファイルを編集します。

プロジェクトのビルドに使用したコンピュータ環境、コンパイラ環境を調査します。

% uname -mo
i686 GNU/Linux
% gcc --version
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

adlintize コマンドがサポートするプリセットの ビルド環境を表示し、プロジェクトのビルド環境に近いものを選択します。 このセッションでは i686 アーキテクチャ上の GNU/Linux で GCC 4.5.1 を使用してい るので、i686-linux-gcc_4.5.1 を選択することになります。

% adlintize -L
i686-linux-gcc_4.5.1
i686-cygwin-gcc_4.3.4
i686-mingw-gcc_4.5.2
x86_64-ubuntu_12.04-gcc_4.6.3

adlintize コマンドで静的解析に必要なファイル の雛形を生成します。

% adlintize -e i686-linux-gcc_4.5.1 -o adlint
% cd adlint
% ls
GNUmakefile     adlint_all.sh   adlint_files.txt  adlint_traits.yml
adlint_all.bat  adlint_cinit.h  adlint_pinit.h

プロジェクトの調査で作成した make.log ファイルと adlintize コマンドが生成した GNUmakefile 中の SOURCES 値を比較して、静的解析の対象ソースファイ ルの過不足を修正します。

% cp GNUmakefile GNUmakefile.orig
% vi GNUmakefile
% diff -u GNUmakefile.orig GNUmakefile
--- GNUmakefile.orig    2011-09-28 13:36:24.328078206 +0900
+++ GNUmakefile 2011-09-28 13:36:37.573902006 +0900
@@ -29,8 +29,6 @@
   putenv.c \
   fileio.c \
   kmapdef.c \
-  terminfo/checktc.c \
-  terminfo/tetris.c \
   search.c \
   input.c \
   ansi.c \

次に、プロジェクトの調査で作成した make.log ファイル 中でコンパイラに指定されたオプションから、プロジェクト固有のインクルードパスを 洗い出し adlint_traits.yml ファイルに追記します。

% cp adlint_traits.yml adlint_traits.yml.orig
% vi adlint_traits.yml
% diff -u adlint_traits.yml.orig adlint_traits.yml
--- adlint_traits.yml.orig      2011-09-28 13:40:10.748222288 +0900
+++ adlint_traits.yml   2011-09-28 13:40:24.105054386 +0900
@@ -25,6 +25,7 @@
   #     - "../include/bar"
   #     - "/opt/baz/include"
   include_path:
+    - ".."

   # Pathname of the project specific initial header file.
   # This header file is automatically included above the first line of the

2.1.4 静的解析の実行

静的解析の準備で作成した GNUmakefile を使い、静的 解析を実行します。

% make --version
GNU Make 3.82
Built for i386-redhat-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

% make verbose-all
adlint --verbose -t adlint_traits.yml -o . ../braille.c ../acls.c ../putenv.c
../fileio.c ../kmapdef.c ../search.c ../input.c ../ansi.c ../pty.c ../layer.c
../termcap.c ../loadav.c ../comm.c ../screen.c ../term.c ../teln.c ../socket.c
../encoding.c ../utmp.c ../logfile.c ../display.c ../misc.c ../attacher.c
../help.c ../tty.c ../nethack.c ../braille_tsi.c ../sched.c ../process.c
../window.c ../mark.c ../resize.c
                  ../braille.c [fin] |============================| 7.999s
                     ../acls.c [fin] |============================| 12.152s
                   ../putenv.c [fin] |============================| 0.203s
                   ../fileio.c [fin] |============================| 13.013s
...snip...
                   ../window.c [fin] |============================| 22.388s
                     ../mark.c [fin] |============================| 14.827s
                   ../resize.c [fin] |============================| 18.964s
                  screen-4.0.3 [fin] |============================| 58.346s
  771.510s user, 2.370s system, 00:12:53.87 total

% ls *.{i,msg.csv,met.csv,log}
acls.c.log             kmapdef.c.log      sched.c.log
acls.c.met.csv         kmapdef.c.met.csv  sched.c.met.csv
acls.c.msg.csv         kmapdef.c.msg.csv  sched.c.msg.csv
acls.i                 kmapdef.i          sched.i
ansi.c.log             layer.c.log        screen-4.0.3.log
ansi.c.met.csv         layer.c.met.csv    screen-4.0.3.met.csv
ansi.c.msg.csv         layer.c.msg.csv    screen-4.0.3.msg.csv
...snip...
input.c.log            resize.c.log       window.c.met.csv
input.c.met.csv        resize.c.met.csv   window.c.msg.csv
input.c.msg.csv        resize.c.msg.csv   window.i
input.i                resize.i


Previous: Analyzing Screen, Up: Sample Session

2.2 distmake を用いた高速な分散並列解析

追記予定。


Next: , Previous: Sample Session, Up: Top

3 コマンド仕様


Next: , Up: Command

3.1 adlintize コマンド

3.1.1 機能

AdLint による静的解析に必要な下記ファイルの雛形を作成します。

GNUmakefile 中の SOURCES 変数には、adlintize コマンドを 実行したディレクトリ配下にある全ての *.c ファイルが設定されます。

3.1.2 使用方法

解析対象プロジェクトのルートディレクトリで、下記のように adlintize コ マンドを実行すると、adlint ディレクトリ中に静的解析に必要なファイルを作 成します。

% cd project-root
% adlintize -o adlint
% ls adlint
GNUmakefile     adlint_all.sh   adlint_files.txt  adlint_traits.yml
adlint_all.bat  adlint_cinit.h  adlint_pinit.h

adlintize コマンドには、プリセットのビルド環境がいくつか用意されてい ます。 プリセットのビルド環境を指定することで、設定ファイルの雛形により多くの情報を自 動生成することができます。

用意されているプリセットのビルド環境は、下記のコマンドにより一覧を確認すること ができます。

% adlintize -L
i686-linux-gcc_4.5.1
i686-cygwin-gcc_4.3.4
i686-mingw-gcc_4.5.2
x86_64-ubuntu_12.04-gcc_4.6.3

プリセットのビルド環境は、-e オプションで指定します。

% cd project-root
% adlintize -e i686-linux-gcc_4.5.1 -o adlint
% ls adlint
GNUmakefile     adlint_all.sh   adlint_files.txt  adlint_traits.yml
adlint_all.bat  adlint_cinit.h  adlint_pinit.h

3.1.3 ヘルプメッセージ

Usage: adlintize [options] [project-name]
Options:
  -t FILE, --traits FILE         Write traits to FILE
                                 If omitted, `adlint_traits.yml' will be used
  -p FILE, --pinit-header FILE   Write project initial header to FILE
                                 If omitted, `adlint_pinit.h' will be used
  -c FILE, --cinit-header FILE   Write compiler initial header to FILE
                                 If omitted, `adlint_cinit.h' will be used
  -l FILE, --list-file FILE      Write list file to FILE
                                 If omitted, `adlint_files.txt' will be used
  -m FILE, --makefile FILE       Write analysis procedure GNUmakefile to FILE
                                 If omitted, `GNUmakefile' will be used
  -s FILE, --sh-script FILE      Write analysis procedure sh script to FILE
                                 If omitted, `adlint_all.sh' will be used
  -b FILE, --bat-file FILE       Write analysis procedure bat file to FILE
                                 If omitted, `adlint_all.bat' will be used
  -o DIR, --output-dir DIR       Set output directory
                                 If omitted, `.' will be used
  -e ENV, --environment ENV      Assume ENV as target build environment
  -L, --list-environment         List all preset build environments
  -f, --force                    Force to overwrite existing files
      --version                  Display version information
      --copyright                Display copyright information
      --prefix                   Display prefix directory of AdLint
  -h, --help                     Display this message


Next: , Previous: AdLintize Command, Up: Command

3.2 adlint コマンド

3.2.1 機能

一括でシングルモジュール解析 (コンパイルフェーズに対応する解析) とクロスモジュ ール解析 (リンクフェーズに対応する解析) を実行します。

解析対象のソースファイルをコマンドラインで指定する方法と、リストファイルにより 指定する方法をサポートします。

動作内容は、解析対象のソースファイルを全て指定して adlint_sma コマンドによりシングルモジュール解析を実行し、 adlint_cma コマンドによりクロスモジュール解 析を実行する場合と同等です。

シングルモジュール解析結果として、ソースファイル毎に下記のファイルを作成します 。

クロスモジュール解析結果として、下記のファイルを作成します。

3.2.2 使用方法

adlintize コマンドにより設定ファイルの雛形を 作成したディレクトリで、下記のように adlint コマンドを起動するとシン グルモジュール解析とクロスモジュール解析を一括で実行可能です。

% cd project-root
% adlintize -o adlint
% cd adlint
% adlint -v -t adlint_traits.yml -o . -p 1 -l adlint_files.txt
               ../intro_demo.c [fin] |============================| 0.134s
                    intro_demo [fin] |============================| 0.012s
  0.718s user, 0.500s system, 00:00:01.21 total

テキストエディタや統合開発環境などと連携する場合、下記のように -v,--verbose オプションを指定しないことで、進捗表示を行わずメッセージ を stderr に出力することができます。

% adlint -t adlint_traits.yml -o . -p 1 -l adlint_files.txt
../intro_demo.c:6:9:warning:c_builtin:W0492:UNC:X99:同じ識別子名 `i' が構造体/共用体のメンバの他に、ラベル、タグ、または通常の識別子としても使われています。
../intro_demo.c:12:13:warning:c_builtin:W0027:UNC:X99:ポインタ型の変数に対して比較演算が行われています。
../intro_demo.c:16:14:warning:c_builtin:W0422:UNC:X99:値が NULL になることがあるポインタに対して間接参照が行われています。
../intro_demo.c:31:13:warning:c_builtin:W0613:UNC:X99:この制御式の値は常に偽になります。
...snip...
../intro_demo.c:55:9:warning:c_builtin:W9001:UNC:X99:この文には制御が到達しません。
../intro_demo.c:2:1:warning:c_builtin:W0071:UNC:X99:インクルードされている "../useless_header.h" の内容は翻訳単位の中で全く参照されていません。削除することができます。
../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:関数 `int bar(void)' が定義されていますが、このプロジェクトでは使われていません。

3.2.3 ヘルプメッセージ

Usage: adlint [options] [source-file...]
Options:
  -t FILE, --traits FILE         Use FILE as traits file (mandatory)
  -l FILE, --list-file FILE      Use FILE as list file
  -o DIR, --output-dir DIR       Output result files to DIR
  -p NUM, --strip NUM            Use source file names from which stripped NUM
                                 leading components as the base name of output
                                 files
  -v, --verbose                  Increase verbosity but suppress message output
      --version                  Display version information
      --copyright                Display copyright information
      --prefix                   Display prefix directory of AdLint
  -h, --help                     Display this message


Next: , Previous: AdLint Command, Up: Command

3.3 adlint_sma コマンド

3.3.1 機能

コマンドラインで指定した解析対象ソースファイルのシングルモジュール解析 (コンパ イルフェーズに対応する解析) のみを実行します。

シングルモジュール解析結果として、ソースファイル毎に下記のファイルを作成します 。

3.3.2 使用方法

adlintize コマンドにより設定ファイルの雛形を 作成したディレクトリで、下記のように adlint_sma コマンドを起動すると シングルモジュール解析のみを実行可能です。

% adlint_sma -v -t adlint_traits.yml -o . -p 1 ../intro_demo.c
               ../intro_demo.c [fin] |============================| 0.134s
  1.062s user, 0.843s system, 00:00:01.90 total

テキストエディタや統合開発環境などと連携する場合、下記のように -v,--verbose オプションを指定しないことで、進捗表示を行わずコンパイラ と同じようにメッセージを stderr に出力することがきます。

% adlint_sma -t adlint_traits.yml -o . -p 1 ../intro_demo.c
../intro_demo.c:6:9:warning:c_builtin:W0492:UNC:X99:同じ識別子名 `i' が構造体/共用体のメンバの他に、ラベル、タグ、または通常の識別子としても使われています。
../intro_demo.c:12:13:warning:c_builtin:W0027:UNC:X99:ポインタ型の変数に対して比較演算が行われています。
../intro_demo.c:16:14:warning:c_builtin:W0422:UNC:X99:値が NULL になることがあるポインタに対して間接参照が行われています。
../intro_demo.c:31:13:warning:c_builtin:W0613:UNC:X99:この制御式の値は常に偽になります。
...snip...
../intro_demo.c:55:9:warning:c_builtin:W9001:UNC:X99:この文には制御が到達しません。
../intro_demo.c:2:1:warning:c_builtin:W0071:UNC:X99:インクルードされている "../useless_header.h" の内容は翻訳単位の中で全く参照されていません。削除することができます。

3.3.3 ヘルプメッセージ

Usage: adlint_sma [options] source-file...
Options:
  -t FILE, --traits FILE         Use FILE as traits file (mandatory)
  -o DIR, --output-dir DIR       Output result files to DIR
  -p NUM, --strip NUM            Use source file names from which stripped NUM
                                 leading components as the base name of output
                                 files
  -v, --verbose                  Increase verbosity but suppress message output
      --version                  Display version information
      --copyright                Display copyright information
      --prefix                   Display prefix directory of AdLint
  -h, --help                     Display this message


Next: , Previous: AdLint SMA Command, Up: Command

3.4 adlint_cma コマンド

3.4.1 機能

コマンドラインで指定した全シングルモジュール解析のメトリクス測定結果をもとに、 クロスモジュール解析 (リンクフェーズに対応する解析) のみを実行します。

クロスモジュール解析結果として、下記のファイルを作成します。

3.4.2 使用方法

adlintize コマンドにより設定ファイルの雛形を 作成したディレクトリで、adlint_sma コマンド によるシングルモジュール解析を実行後に下記のように adlint_cma コマン ドを起動するとクロスモジュール解析のみを実行可能です。

% ls *.c.met.csv
intro_demo.c.met.csv
% adlint_cma -v -t adlint_traits.yml -o . intro_demo.c.met.csv
                    intro_demo [fin] |============================| 0.011s
  1.203s user, 0.843s system, 00:00:02.04 total

テキストエディタや統合開発環境などと連携する場合、下記のように -v,--verbose オプションを指定しないことで、進捗表示を行わずリンカと同 じようにメッセージを stderr に出力することができます。

% adlint_cma -t adlint_traits.yml -o . intro_demo.c.met.csv
../intro_demo.c:61:19:warning:c_builtin:W0628:UNC:X99:関数 `int bar(void)' が定義されていますが、このプロジェクトでは使われていません。

3.4.3 ヘルプメッセージ

Usage: adlint_cma [options] sma-metric-file...
Options:
  -t FILE, --traits FILE         Use FILE as traits file (mandatory)
  -o DIR, --output-dir DIR       Output result files to DIR
  -v, --verbose                  Increase verbosity but suppress message output
      --version                  Display version information
      --copyright                Display copyright information
      --prefix                   Display prefix directory of AdLint
  -h, --help                     Display this message


Previous: AdLint CMA Command, Up: Command

3.5 adlint_chk コマンド

3.5.1 機能

コマンドラインで指定した解析対象ソースファイルの前処理のみを実行することで、 特性ファイル の内容を検証します。

3.5.2 使用方法

adlintize コマンドにより設定ファイルの雛形を 作成し、解析対象プロジェクトに合わせて 特性ファイル を編集した後 で、下記のように adlint_chk コマンドを起動すると前処理を実行し 特性ファイル の内容を検証可能です。

% adlint_chk -v -t adlint_traits.yml -o . -p 1 ../intro_demo.c
               ../intro_demo.c [fin] |============================| 0.047s
  0.812s user, 0.875s system, 00:00:01.68 total

ヘッダファイルのインクルードパスが正しく設定されていない場合は、下記のようにエ ラーが発生し、ソースファイルに該当する *.c.msg.csv ファイルを確認するこ とで、どのヘッダファイルがインクルードできなかったかを確認可能です。

% adlint_chk -v -t adlint_traits.yml -o . -p 1 ../intro_demo.c
               ../intro_demo.c [cpp] |=======                     | 0.006s!
An error was occurred while processing `../intro_demo.c'.
See `intro_demo.c.msg.csv' and `intro_demo.c.log' for more details.

% tail intro_demo.c.msg.csv
E,../intro_demo.c,1,1,E0009,ヘッダファイル <stdio.h> が見つかりません。
X,../intro_demo.c,1,1,X0003,回復不能なエラーにより解析処理を中断しました。詳細は `intro_demo.c.msg.csv' 及び `intro_demo.c.log' を確認して下さい。

3.5.3 ヘルプメッセージ

Usage: adlint_chk [options] source-file...
Options:
  -t FILE, --traits FILE         Use FILE as traits file (mandatory)
  -o DIR, --output-dir DIR       Output result files to DIR
  -p NUM, --strip NUM            Use source file names from which stripped NUM
                                 leading components as the base name of output
                                 files
  -v, --verbose                  Increase verbosity but suppress message output
      --version                  Display version information
      --copyright                Display copyright information
      --prefix                   Display prefix directory of AdLint
  -h, --help                     Display this message


Next: , Previous: Command, Up: Top

4 入力仕様


Next: , Up: Input

4.1 入力ファイル

下記 2 種類のファイルにより解析動作を設定します。

特性ファイル
解析処理の方法を YAML 形式で記述します。
メッセージ定義ファイル
メッセージカタログを YAML 形式で記述します。

特性ファイルは、adlintadlint_smaadlint_cma コマンドのオプション --traits でパス名を指定します。

メッセージ定義ファイルは、AdLint インストールパス内の etc/mesg.d 内にイ ンストールされます。 adlintadlint_smaadlint_cma コマンド は、メッセージ特性language 項目で指定した言語に従い、適切なメッセージ定義ファイルを選択し ます。


Next: , Previous: Input Files, Up: Input

4.2 特性ファイル

プロジェクト特性コンパイラ特性リンカ特性メッセージ特性 を 単一の YAML 形式の設定ファイル(サンプル) に記述します。

下記のように解析対象プロジェクトのルートディレクトリで adlintize コマンドを実行すると、そのプロジェクト用の特性ファイル adlint_traits.yml の雛形、および、解析手順を自動化する GNUmakefile やシェルスクリプトなどを生成することができます。

% cd project
% adlintize -o adlint
% ls adlint
GNUmakefile     adlint_all.sh   adlint_files.txt  adlint_traits.yml
adlint_all.bat  adlint_cinit.h  adlint_pinit.h

後述の特性ファイルの各設定項目には、環境変数を指定することもできます。

例えば、設定項目 item に、環境変数 ENV_VAR の値を指定する場合は下 記のように記述します。

  item: $ENV_VAR

また、文字列形式の設定項目に、環境変数の値を埋め込んだ文字列を指定する場合は下 記のように記述します。

  item: "prefix${ENV_VAR}suffix"

ディレクトリパス名の配列を指定する項目では、下記のように一つの環境変数の値によ り複数のパス名を指定することもできます。

% export ENV_VAR="/usr/local/include:/usr/include"
  include_path:
    - $ENV_VAR


Next: , Up: Traits

4.2.1 グローバル特性

グローバル特性は、特性ファイルのルート項目で設定します。

No. 項目名 形式 内容
1 version 文字列 特性ファイルフォーマットのバージョンを表します。この項目は編集してはいけません 。
2 exam_packages 文字列の配列 静的解析に用いるソースコード検査パッケージの名前を列挙します。

"c_builtin" は AdLint 本体に組み込み済みの検査パッケージ名です。 また、今後さまざまな用途に特化したオプションのソースコード検査パッケージを開発 する予定です。

例えば、adlint-exam-c_ansi という、ソースコードが ANSI C に準拠している かを検査するパッケージをインストールした場合、exam_packages を下記のよう に編集して解析することができます。

以下の場合は、ANSI C 準拠の検査パッケージのみが実行されます。

     exam_packages:
       - "c_ansi"

以下の場合は、AdLint 組み込みの検査パッケージと、ANSI C 準拠の検査パッケージが実 行されます。

     exam_packages:
       - "c_builtin"
       - "c_ansi"



Next: , Previous: Global Traits, Up: Traits

4.2.2 プロジェクト特性

プロジェクト特性は、特性ファイルの project_traits 配下の項目で設定します 。

No. 項目名 形式 内容
1 project_name 文字列 プロジェクト名を設定します。
2 project_root 文字列 解析対象プロジェクトのルートディレクトリを設定します。
3 target_files:inclusion_paths 文字列の配列 解析対象ソースファイルが存在する上位ディレクトリのパス名を設定します。 各エントリの文字列は、`:' (Windows 環境では `;') を区切り文字とし て複数のパス名を設定できます。
4 target_files:exclusion_paths 文字列の配列 target_files:inclusion_paths で指定したディレクトリ配下のファイルで、解析対象から除外するソースファイルが存在するディレクトリを設定します。 解析対象プロジェクト中にサードパーティ製ライブラリのソースコードを含み、それら のソースファイルに関するコードチェックを行いたくない場合などに指定します。 各エントリの文字列は、`:' (Windows 環境では `;') を区切り文字とし て複数のパス名を設定できます。
5 initial_header 文字列 解析対象ソースファイルの先頭に自動でインクルードされるヘッダファイルを指定しま す。このファイルには、プロジェクト固有のマクロ定義などを記述します。
6 file_search_paths 文字列の配列 プロジェクト固有のインクルードファイルの探索パスを設定します。 各エントリの文字列は、`:' (Windows 環境では `;') を区切り文字とし て複数のパス名を設定できます。
7 coding_style:indent_style 文字列 コードの字下げスタイルを "K&R""Allman""GNU" から選択し て設定します。

"K&R" スタイルは、

     int foo(int i)
     {
         if (i == 0) {
             return 0;
         }
         return i;
     }

となります。

"Allman" スタイルは、

     int foo(int i)
     {
         if (i == 0)
         {
             return 0;
         }
         return i;
     }

となります。

"GNU" スタイルは、

     int
     foo(int i)
     {
       if (i == 0)
         {
           return 0;
         }
       return i;
     }

となります。

8 coding_style:tab_width 整数値 タブ文字の見た目上の桁数を設定します。
9 coding_style:indent_width 整数値 インデントの見た目上の桁数を設定します。
10 file_encoding 文字列 ソースファイルの文字エンコーディングを設定します。値が設定されていない場合は "ASCII-8BIT" として処理します。


Next: , Previous: Project Traits, Up: Traits

4.2.3 コンパイラ特性

コンパイラ特性は、compiler_traits 配下の項目で設定します。

No. 項目名 形式 内容
1 initial_header 文字列 解析対象ソースファイルの先頭、かつ、プロジ ェクト固有の initial_header より前に自動でインクルードされるヘッダファ イルを指定します。このファイルには、コンパイラ固有の定義済みマクロや型定義など を記述します。
2 file_search_paths 文字列の配列 コンパイラ固有のインクルードファイルの探索パスを設定します。 各エントリの文字列は、`:' (Windows 環境では `;') を区切り文字とし て複数のパス名を設定できます。
3 standard_types:char_size 整数値 char 型ファミリのサイズをビット単位で設定します。
4 standard_types:char_alignment 整数値 char 型ファミリのメモリアライメントをビット単位で設定します。
5 standard_types:short_size 整数値 short 型ファミリのサイズをビット単位で設定します。
6 standard_types:short_alignment 整数値 short 型ファミリのメモリアライメントをビット単位で設定します。
7 standard_types:int_size 整数値 int 型ファミリのサイズをビット単位で設定します。
8 standard_types:int_alignment 整数値 int 型ファミリのメモリアライメントをビット単位で設定します。
9 standard_types:long_size 整数値 long int 型ファミリのサイズをビット単位で設定します。
10 standard_types:long_alignment 整数値 long int 型ファミリのメモリアライメントをビット単位で設定します。
11 standard_types:long_long_size 整数値 long long int 型ファミリのサイズをビット単位で設定します。
12 standard_types:long_long_alignment 整数値 long long int 型ファミリのメモリアライメントをビット単位で設定します。
13 standard_types:float_size 整数値 float 型のサイズをビット単位で設定します。
14 standard_types:float_alignment 整数値 float 型のメモリアライメントをビット単位で設定します。
15 standard_types:double_size 整数値 double 型のサイズをビット単位で設定します。
16 standard_types:double_alignment 整数値 double 型のメモリアライメントをビット単位で設定します。
17 standard_types:long_double_size 整数値 long double 型のサイズをビット単位で設定します。
18 standard_types:long_double_alignment 整数値 long double 型のメモリアライメントをビット単位で設定します。
19 standard_types:code_ptr_size 整数値 関数へのポインタ型のサイズをビット単位で設定します。
20 standard_types:code_ptr_alignment 整数値 関数へのポインタ型のメモリアライメントをビット単位で設定します。
21 standard_types:data_ptr_size 整数値 データへのポインタ型のサイズをビット単位で設定します。
22 standard_types:data_ptr_alignment 整数値 データへのポインタ型のメモリアライメントをビット単位で設定します。
23 standard_types:char_as_unsigned_char 真偽値 `char' 型を `unsigned char' 型として扱う場合 true を指定します。
24 arithmetic:logical_right_shift 真偽値 右シフト式 `>>' を算術シフトではなく、論理シフトとして扱う場合 true を指 定します。
25 identifier_max 整数値 コンパイラにより識別可能なシンボルの最大長を指定します。
26 extension_substitutions 文字列のマップ コンパイラ固有の拡張機能を調整するためのトークン置換パターンを指定します。 AdLint は、ここで指定した拡張機能の使用箇所を W0061 メッセージによって警 告します。

`__attribute__ ( 任意のトークン列 )' というトークン列をプリプロセス後に 削除しつつ W0061 メッセージによる警告を出力する場合は、下記のように指定し ます。

     extension_substitutions:
       "__attribute__(__adlint__any)": ""

また、`__restrict' というトークンを `restrict' に置換しつつ W0061 メッセージによる警告を出力する場合は、下記のように指定します。

     extension_substitutions:
       "__restrict": "restrict"


27 arbitrary_substitutions 文字列のマップ extension_substitutions と同様に、プリプロセス後にトークン列を置換するための項目ですが、W0061 メ ッセージを出力しない点が異なります。


Next: , Previous: Compiler Traits, Up: Traits

4.2.4 リンカ特性

リンカ特性は、linker_traits 配下の項目で設定します。

No. 項目名 形式 内容
1 identifier_max 整数値 リンカにより識別可能な外部シンボルの最大長を指定します。
2 identifier_ignore_case 真偽値 リンカにより外部シンボルを識別する際、大文字小文字を区別するかを指定します。


Previous: Linker Traits, Up: Traits

4.2.5 メッセージ特性

メッセージ特性は、message_traits 配下の項目で設定します。

No. 項目名 形式 内容
1 language 文字列 メッセージ本文の言語を指定します。(現時点では) "en_US""ja_JP" が指定可能です。
2 individual_suppression 真偽値 解析対象ファイル内の ソースコード注釈 による警告メッセージの抑止機能を有効化します。

true の場合、注釈によるメッセージ抑止が可能になります。

3 exclusion:categories 文字列の配列 exam_packages で指定したソースコード検査パッ ケージ中のコードチェック機能で、実行を除外するものをメッセージのカテゴリにより 指定します。
4 exclusion:severities 正規表現を表す文字列 exam_packages で指定したソースコード検査パッ ケージ中のコードチェック機能で、実行を除外するものをメッセージの深刻度により指 定します。
5 exclusion:messages メッセージ ID と文字列のマップ exam_packages で指定したソースコード検査パッ ケージ中のコードチェック機能で、実行を除外するものをメッセージ ID により指定し ます。

メッセージ ID は、ソースコード検査パッケージをまたいでユニークではない場合があ るため、文字列として該当するメッセージ ID が含まれるソースコード検査パッケージ 名も指定してください。

6 inclusion:messages メッセージ ID と文字列のマップ exclusion セクションの設定内容により除外しましたが、メッセージ ID 指定で 特定のコードチェック機能を含める場合に指定します。

例えば、exclusion:categories でカテ ゴリ指定により除外したコードチェック機能群のうち、特定のもののみを実行したい場 合を想定した項目です。

7 change_list メッセージ ID と変更内容のマップ 特定メッセージの定義情報を変更する場合に指定します。

例えば、"c_builtin" パッケージの W9999 メッセージを変更する場合、 下記のように設定します。

     change_list:
       W9999:
         package: "c_builtin"
         classes:
           - "新しいカテゴリ名1:深刻度1"
           - "新しいカテゴリ名2:深刻度2"
         format: "新しいメッセージフォーマット。"



Next: , Previous: Traits, Up: Input

4.3 メッセージ定義ファイル

AdLint が出力する全てのエラー、警告メッセージを YAML 形 式の設定ファイルに記述します。 通常、このファイルは直接編集することはありません。 メッセージ内容を変更する場合は、特性ファイルの change_list 項目で変更内容を指定してください。


Previous: Message Definition, Up: Input

4.4 ソースコード注釈

解析対象のソースコード中にコメントとして、AdLint の解析動作を制御するための注釈 を記述することができます。

4.4.1 警告メッセージ抑止注釈

通常のコメントに ADLINT:SF で始まる注釈を含めることで、該当ファイルの解 析時に指定した警告メッセージを抑止することができます。 また、ADLINT:SL で始まる注釈を含めると、該当行の解析時に指定した警告メッ セージを抑止することができます。

注釈の書式、および、使用例を下記に示します。

• 共通定義

     message_specifier_list : qualified_message_specifier
                            | unqualified_message_specifier
                            | message_specifier_list qualified_message_specifier
                            | message_specifier_list unqualified_message_specifier
     
     qualified_message_specifier : ':' package_name unqualified_message_specifier
     
     unqualified_message_specifier : ':' '[' message_name_list ']'
     
     message_name_list : message_name
                       | message_name_list ',' message_name
     
     message_name : 'W' [0-9]{4}
     
     package_name : 特性ファイルの exam_packages に指定した文字列

• ファイル毎の警告メッセージ抑止注釈

     file_wise_suppressor_annotation : "/*" file_wise_suppressor_head message_specifier_list "*/"
                                     | "//" file_wise_suppressor_head message_specifier_list
     
     file_wise_suppressor_head : "ADLINT:SF"

• 行毎の警告メッセージ抑止注釈

     line_wise_suppressor_annotation : "/*" line_wise_suppressor_head message_specifier_list "*/"
                                     | "//" line_wise_suppressor_head message_specifier_list
     
     line_wise_suppressor_head : "ADLINT:SL"

• サンプルコード

/* ADLINT:SF:[W0001,W0002] (to suppress W0001 and W0002 of all exam-packages in this file.) */
#include <stdio.h>

extern int i; /* ADLINT:SL:[W0003] (to suppress W0003 of all exam-packages only at this line.) */
extern int j; /* ADLINT:SL:c_staging:[W2001] (to suppress W2001 of `c_staging' exam-package only at this line.) */

void foo(void)
{
    printf("%d\n", i + j);
}


Next: , Previous: Input, Up: Top

5 出力仕様


Next: , Up: Output

5.1 出力ファイル

シングルモジュール解析の結果を、下記 4 種類のファイルに出力します。

No. 名称 ファイル名 内容
1 プリプロセス済みソース <拡張子を除いたソースファイル名>.i # で始まる行はラインマーカーです。
2 メトリクスファイル <ソースファイル名>.met.csv メトリクス、コード情報を CSV 形式で出力します。
3 メッセージファイル <ソースファイル名>.msg.csv エラー、警告メッセージを CSV 形式で出力します。
4 ログファイル <ソースファイル名>.log シングルモジュール解析処理のログを出力します。

クロスモジュール解析の結果を、下記 3 種類のファイルに出力します。

No. 名称 ファイル名 内容
1 メトリクスファイル <プロジェクト名>.met.csv メトリクス情報を CSV 形式で出力します。
2 メッセージファイル <プロジェクト名>.msg.csv 警告メッセージを CSV 形式で出力します。
3 ログファイル <プロジェクト名>.log クロスモジュール解析処理のログを出力します。


Next: , Previous: Output Files, Up: Output

5.2 共通定義

     version_number
       : major_version '.' minor_version '.' patch_level
     
     major_version : 整数値
     
     minor_version : 整数値
     
     patch_level : 整数値
     
     exec_timestamp : 年 '-' 月 '-' 日 ' ' 時 ':' 分 ':' 秒 ':' タイムゾーン
     
     exec_working_directory : 解析を実行したディレクトリのフルパス名
     
     new_line : 実行環境依存の改行文字列
     
     file_path : 実行環境依存のファイルパス名
     
     line_no : 整数値
     
     lines : 整数値
     
     column_no : 整数値
     
     location : file_path ',' line_no ',' column_no
     
     function_identifier
       : function_name ',' function_signature
     
     function_name : c_identifier
     
     function_signature : c_declaration_specifiers c_declarator
     
     function_linkage_type
       : 'I'  <- Internal
       | 'X'  <- eXternal
     
     function_scope_type
       : 'F'  <- File
       | 'B'  <- Block
     
     function_declaration_type
       : 'E'  <- Explicit
       | 'I'  <- Implicit
     
     type_name : c_identifier
     
     type_rep : c_declaration
     
     variable_name : c_identifier
     
     initializer_rep : c_initializer
     
     assignment_rep : c_assignment_operator c_assignment_expression
     
     macro_name : c_identifier
     
     macro_value
       :
       | pp_tokens
     
     pp_tokens : c_pp_tokens
     
     exam_package_name : 任意の文字列
     
     message_id
       : 'W' [0-9]{4}
       | 'E' [0-9]{4}
       | 'C' [0-9]{4}
     
     message_category : [A-Z]{3}
     
     message_severity : [A-Z][0-9]{2}
     
     message_text : 任意の文字列


Next: , Previous: Common, Up: Output

5.3 メトリクスファイル

5.3.1 バージョンレコード

     metrics_version_record
       : metrics_version_head ',' version_number ',' exec_timestamp ',' exec_working_directory
     
     metrics_version_head : "VER"

• 出力例

     VER,0.6.4,2012-02-16 14:10:59 +0900,/home/yanoh/intro_demo

5.3.2 宣言レコード

     declaration_record
       : declaration_head ',' location ',' typedcl_record_body
       | declaration_head ',' location ',' gvardcl_record_body
       | declaration_head ',' location ',' funcdcl_record_body
     
     declaration_head : "DCL"

• 型宣言レコード

     typedcl_record_body
       : 'T' ',' typedcl_type ',' type_name ',' type_rep
     
     typedcl_type
       : 'T'  <- typedef
       | 'S'  <- struct
       | 'U'  <- union
       | 'E'  <- enum

• 外部変数宣言レコード

     gvardcl_record_body
       : 'V' ',' variable_name ',' type_rep

• 関数宣言レコード

     funcdcl_record_body
       : 'F' ',' function_linkage_type ',' function_scope_type ',' function_declaration_type ',' function_identifier

• 出力例

 1: typedef int *int_ptr;
 2:
 3: struct Foo {
 4:     int i;
 5:     long l;
 6: };
 7:
 8: union Bar {
 9:     int i;
10:     char c;
11: };
12:
13: enum Color {
14:     RED = 1,
15:     GREEN,
16:     BLUE
17: };
18:
19: extern int global_1;
20:
21: extern int foo(long);
     DCL,test.c,1,14,T,T,int_ptr,int *
     DCL,test.c,3,8,T,S,Foo,struct Foo { int i; long l; }
     DCL,test.c,8,7,T,U,Bar,union Bar { int i; char c; }
     DCL,test.c,13,6,T,E,Color,"enum Color { RED = 1, GREEN, BLUE }"
     DCL,test.c,19,12,V,global_1,int
     DCL,test.c,21,12,F,X,F,E,foo,int foo(long)

5.3.3 定義レコード

     definition_record
       : definition_head ',' location ',' vardef_record_body
       | definition_head ',' location ',' fundef_record_body
       | definition_head ',' location ',' macrodef_record_body
       | definition_head ',' location ',' labeldef_record_body
     
     definition_head : "DEF"

• 変数定義レコード

     vardef_record_body
       : 'V' ',' variable_linkage_type ',' variable_scope_type ',' storage_class_type ',' variable_name ',' type_rep
     
     variable_linkage_type
       : 'I'  <- Internal
       | 'X'  <- eXternal
       | 'N'  <- None
     
     variable_scope_type
       : 'F'  <- File
       | 'B'  <- Block
       | 'P'  <- Parameter
     
     storage_class_type
       : 'A'  <- Auto
       | 'R'  <- Register
       | 'S'  <- Static
       | 'N'  <- None

• 関数定義レコード

     fundef_record_body
       : 'F' ',' function_linkage_type ',' function_scope_type ',' function_identifier ',' lines

• マクロ定義レコード

     macrodef_record_body
       : 'M' ',' macro_name ',' macro_form_type
     
     macro_form_type
       : 'O'  <- Object
       | 'F'  <- Function

• ラベル定義レコード

     labeldef_record_body
       : 'L' ',' label_name
     
     label_name : c_identifier

• 出力例

 1: int global_1;
 2: struct { int i; long l; } global_2;
 3:
 4: static long static_1;
 5: static enum { FOO, BAR, BAZ } static_2;
 6:
 7: int foo(int i, register short s)
 8: {
 9:     static char static_3 = 0;
10:     register int local_1 = i + s + static_3;
11:     auto int local_2 = 0;
12:     int local_3 = 0;
13:     goto end;
14: end:
15:     return local_1 + local_2 + local_3;
16: }
17:
18: static void bar(void) {}
19:
20: #define OBJ_FORM_MACRO (1 + 2)
21: #define MAX(a, b) ((a) < (b) ? (b) : (a))
     DEF,test.c,1,5,V,X,F,N,global_1,int
     DEF,test.c,2,27,V,X,F,N,global_2,struct __adlint__unnamed_1
     DEF,test.c,4,13,V,I,F,S,static_1,long
     DEF,test.c,5,31,V,I,F,S,static_2,enum __adlint__unnamed_2
     DEF,test.c,7,13,V,I,P,N,i,int
     DEF,test.c,7,31,V,I,P,R,s,short
     DEF,test.c,9,17,V,I,B,S,static_3,char
     DEF,test.c,10,18,V,I,B,R,local_1,int
     DEF,test.c,11,14,V,I,B,A,local_2,int
     DEF,test.c,12,9,V,I,B,N,local_3,int
     DEF,test.c,7,5,F,X,F,foo,"int foo(int,short)",10
     DEF,test.c,18,13,F,I,F,bar,void bar(void),1
     DEF,test.c,20,1,M,OBJ_FORM_MACRO,O
     DEF,test.c,21,1,M,MAX,F
     DEF,test.c,14,1,L,end

5.3.4 初期化レコード

     initialization_record
       : initialization_head ',' location ',' variable_name ',' initializer_rep
     
     initialization_head : "INI"

• 出力例

1: int global_1 = 1;
2:
3: int main(void)
4: {
5:     int local_1 = global_1;
6:     int local_2 = local_1 + 1;
7:
8:     return local_1 + local_2;
9: }
     INI,test.c,1,5,global_1,1
     INI,test.c,5,9,local_1,global_1
     INI,test.c,6,9,local_2,local_1 + 1

5.3.5 代入式レコード

     assignment_record
       : assignment_head ',' location ',' variable_name ',' assignment_rep
     
     assignment_head : "ASN"

• 出力例

 1: int main(void)
 2: {
 3:     int i;
 4:
 5:     for (i = 0; i < 10; i++) {
 6:         if (i % 2) {
 7:             i += 1;
 8:         }
 9:     }
10:
11:     return 0;
12: }
     ASN,test.c,5,12,i,= 0
     ASN,test.c,7,15,i,+= 1

5.3.6 依存レコード

     dependency_record
       : dependency_head ',' location ',' include_record_body
       | dependency_head ',' location ',' call_record_body
       | dependency_head ',' location ',' xref_record_body
     
     dependency_head : "DEP"

• インクルードレコード

     include_record_body
       : 'I' ',' included_fpath
     
     included_fpath : '<' file_path '>' | '"' file_path '"'

• 呼び出しレコード

     call_record_body
       : 'C' ',' caller_function ',' callee_function
     
     caller_function : function_identifier
     
     callee_function : function_identifier

• 外部参照レコード

     xref_record_body
       : 'X' ',' xref_variable_record_body
       | 'X' ',' xref_function_record_body
     
     xref_variable_record_body
       : 'V' ',' accessor_function ',' access_type ',' accessee_variable
     
     xref_function_record_body
       : 'F' ',' accessor_function ',' access_type ',' accessee_function
     
     accessor_function : function_identifier
     
     access_type : 'R' | 'W'
     
     accessee_variable : variable_name
     
     accessee_function : function_identifier

• 出力例

 1: #include <stdio.h>
 2: #include "test.h"
 3:
 4: extern int global;
 5:
 6: int foo(long l)
 7: {
 8:     int i = global;
 9:
10:     return l - i;
11: }
12:
13: int main(void)
14: {
15:     int (*p)(long) = &foo;
16:
17:     global = 5;
18:
19:     return (*p)(10);
20: }
     DEP,test.c,1,1,I,</usr/include/stdio.h>
     DEP,test.c,2,1,I,"""test.h"""
     DEP,test.c,8,13,X,V,foo,int foo(long),R,global
     DEP,test.c,19,16,C,main,int main(void),foo,int foo(long)
     DEP,test.c,15,23,X,F,main,int main(void),R,foo,int foo(long)
     DEP,test.c,17,12,X,V,main,int main(void),W,global

5.3.7 リテラルレコード

     literal_record
       : literal_head ',' location ',' literal_type ',' literal_prefix ',' literal_suffix ',' literal_value
     
     literal_head : "LIT"
     
     literal_type
       : 'DN'  <- Decimal Number
       | 'HN'  <- Hexadecimal Number
       | 'ON'  <- Octal Number
       | 'BN'  <- Binary Number
       | 'FN'  <- Floating point Number
       | 'CN'  <- Character Narrow
       | 'SN'  <- String Narrow
       | 'CW'  <- Character Wide
       | 'SW'  <- String Wide
     
     literal_prefix
       :
       | 'l'  | 'L'
       | '0'
       | '0x' | '0X'
       | '0b' | '0B'
     
     literal_suffix
       :
       | 'u'   | 'U'
       | 'l'   | 'L'
       | 'ul'  | 'Ul'  | 'uL'  | 'UL'
       | 'ull' | 'Ull' | 'uLL' | 'ULL'
       | 'll'  | 'LL'
       | 'f'   | 'F'
     
     literal_value
       : c_constant
       | c_string_literal

• 出力例

1: unsigned int i = 0xFFU;
2:
3: int foo(long l)
4: {
5:     const wchar_t *s = L"foobar";
6:
7:     return 0;
8: }
     LIT,test.c,1,18,HN,0x,U,0xFFU
     LIT,test.c,5,24,SW,L,,"L""foobar"""

5.3.8 プリプロセスレコード

     preprocess_record
       : preprocess_head ',' location ',' pp_directive ',' pp_tokens
     
     preprocess_head : "PRE"
     
     pp_directive
       : "#if"
       | "#ifdef"
       | "#ifndef"
       | "#elif"
       | "#else"
       | "#endif"
       | "#include"
       | "#define"
       | "#undef"
       | "#line"
       | "#error"
       | "#pragma"
       | "#"

• 出力例

 1: #pragma once
 2:
 3: #if defined(NDEBUG)
 4: void debug(const char *msg) {}
 5: #else
 6: #include <stdio.h>
 7: void debug(const char *msg)
 8: {
 9:     puts(msg);
10: }
11: #endif
     PRE,test.c,1,1,#pragma,once
     PRE,test.c,3,1,#if,defined(NDEBUG)
     PRE,test.c,5,1,#else,
     PRE,test.c,6,1,#include,<stdio.h>
     PRE,test.c,11,1,#endif,

5.3.9 メトリック値レコード

     metric_record
       : metric_head ',' file_metric_record_body
       | metric_head ',' func_metric_record_body
     
     metric_head : "MET"
     
     file_metric_record_body
       : file_metric_name ',' file_path ',' metric_value
     
     func_metric_record_body
       : func_metric_name ',' function_identifier ',' location ',' metric_value
     
     file_metric_name
       : "FL_STMT"  <- ステートメント数
       | "FL_FUNC"  <- 関数の数
     
     func_metric_name
       : "FN_STMT"  <- ステートメント数
       | "FN_UNRC"  <- 到達しないステートメント数
       | "FN_LINE"  <- 物理行数
       | "FN_PARA"  <- パラメータ数
       | "FN_UNUV"  <- 使用/再使用されない変数の数
       | "FN_CSUB"  <- 関数を呼び出す箇所数
       | "FN_CALL"  <- 関数から呼び出される箇所数
       | "FN_GOTO"  <- goto 文の数
       | "FN_RETN"  <- 関数内の戻り点の数
       | "FN_UELS"  <- else なしの if 文数
       | "FN_NEST"  <- 制御フローグラフの最大ネスト数
       | "FN_PATH"  <- 推定静的パス数
       | "FN_CYCM"  <- サイクロマティック複雑度
     
     metric_value : 整数値


Previous: Metrics File, Up: Output

5.4 メッセージファイル

     message_file
       : message_version_record
       | message_version_record new_line message_list
     
     message_version_record
       : 'V' ',' version_number ',' exec_timestamp ',' exec_working_directory
     
     message_list
       : error_record
       | warning_record
       | message_list new_line error_record
       | message_list new_line warning_record
     
     error_record
       : error_line new_line context_line_list
     
     error_line
       : 'E' ',' file_path ',' line_no ',' column_no ',' exam_package_name ',' message_id ',' message_category ',' message_severity ',' message_text
     
     warning_record
       : warning_line new_line context_line_list
     
     warning_line
       : 'W' ',' file_path ',' line_no ',' column_no ',' exam_package_name ',' message_id ',' message_category ',' message_severity ',' message_text
     
     context_line_list
       :
       | context_line new_line context_line_list
     
     context_line
       : 'C' ',' file_path ',' line_no ',' column_no ',' exam_package_name ',' message_id ',' message_category ',' message_severity ',' message_text


Next: , Previous: Output, Up: Top

6 メッセージ一覧


Next: , Up: Messages

6.1 X0001

6.1.1 メッセージ本文

不明な例外条件 `%s' を検出しました。

6.1.2 内容

AdLint 内部でエラーが発生したことを示します。

このメッセージが出力された場合、該当ソースファイル、特性ファイルメッセージファイル、ログファイルとともに AdLint 開発チー ムへご報告いただければ、AdLint の品質向上につなげることができます。

6.1.3 サンプルコード

なし。

6.1.4 関連メッセージ

なし。

6.1.5 対応バージョン

1.0.0


Next: , Previous: X0001, Up: Messages

6.2 X0002

6.2.1 メッセージ本文

不正なメッセージ ID `%s' を検出しました。

6.2.2 内容

AdLint が内部で使用するメッセージカタログファイルが壊れている可能性があります。

AdLint を再インストールしても問題が解決されない場合は、AdLint 開発チームへご報 告ください。

6.2.3 サンプルコード

なし。

6.2.4 関連メッセージ

なし。

6.2.5 対応バージョン

1.0.0


Next: , Previous: X0002, Up: Messages

6.3 X0003

6.3.1 メッセージ本文

回復不能なエラーにより解析処理を中断しました。詳細は `%s' 及び `%s' を確認して下さい。

6.3.2 内容

ヘッダファイルが見つからない、ソースファイルの構文解析ができないなど、AdLint が 解析を続行できないエラーを検知した場合に出力されます。

この問題の多くは、特性ファイルの内容を見直すことで解決できます。

6.3.3 サンプルコード

なし。

6.3.4 関連メッセージ

なし。

6.3.5 対応バージョン

1.0.0


Next: , Previous: X0003, Up: Messages

6.4 X0004

6.4.1 メッセージ本文

不正なメッセージフォーマット `%s' を検出しました。

6.4.2 内容

AdLint が内部で使用するメッセージカタログファイルが壊れている可能性があります。

AdLint を再インストールしても問題が解決されない場合は、AdLint 開発チームへご報 告ください。

6.4.3 サンプルコード

なし。

6.4.4 関連メッセージ

なし。

6.4.5 対応バージョン

1.0.0


Next: , Previous: X0004, Up: Messages

6.5 E0004

6.5.1 メッセージ本文

対応する #endif 行がありません。

6.5.2 内容

#if#ifdef#ifndef ディレクティブに対応する #endif ディレクティブが見つからない場合に出力されます。

6.5.3 サンプルコード

#if DEBUG
  int i = 0;
#else
  int i = 1;

6.5.4 関連メッセージ

なし。

6.5.5 対応バージョン

1.0.0


Next: , Previous: E0004, Up: Messages

6.6 E0007

6.6.1 メッセージ本文

条件式中のトークン `%s' で構文エラーを検出しました。条件式を偽として評価します。

6.6.2 内容

#if#elif ディレクティブの条件式を評価中に構文エラーを検知した場 合に出力します。

このメッセージが出力された場合、該当する条件式は偽として評価されます。

6.6.3 サンプルコード

なし。

6.6.4 関連メッセージ

なし。

6.6.5 対応バージョン

1.0.0


Next: , Previous: E0007, Up: Messages

6.7 E0008

6.7.1 メッセージ本文

トークン `%s' で構文エラーを検知しました。

6.7.2 内容

このメッセージはプリプロセス後のソースファイルを構文解析できない場合に出力され ます。

ビルドに使用するコンパイラ独自の拡張機能を使用している場合は、 特性ファイルで該当するトークン列を削除するように指定すれば解決で きます。

6.7.3 サンプルコード

なし。

6.7.4 関連メッセージ

なし。

6.7.5 対応バージョン

1.0.0


Next: , Previous: E0008, Up: Messages

6.8 E0009

6.8.1 メッセージ本文

ヘッダファイル <%s> が見つかりません。

6.8.2 内容

#include <...> ディレクティブでヘッダファイルをインクルードしていますが 、特性ファイルで指定したインクルードパス中に該当するヘッダファイ ルが存在しない場合に出力されます。

特性ファイルのインクルードパス設定を見直すことで解決できます。

6.8.3 サンプルコード

なし。

6.8.4 関連メッセージ

なし。

6.8.5 対応バージョン

1.0.0


Next: , Previous: E0009, Up: Messages

6.9 E0010

6.9.1 メッセージ本文

ヘッダファイル "%s" が見つかりません。

6.9.2 内容

#include "..." ディレクティブでヘッダファイルをインクルードしていますが 、特性ファイルで指定したインクルードパス中に該当するヘッダファイ ルが存在しない場合に出力されます。

特性ファイルのインクルードパス設定を見直すことで解決できます。

6.9.3 サンプルコード

なし。

6.9.4 関連メッセージ

なし。

6.9.5 対応バージョン

1.0.0


Next: , Previous: E0010, Up: Messages

6.10 E0013

6.10.1 メッセージ本文

式に文を含めることはできません。

6.10.2 内容

式の中に文を記述する GCC 拡張機能 (Statement Exprs) を使用した場合に出力されます 。

6.10.3 サンプルコード

#define maxint(a, b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
int i = maxint(1, 2); /* E0013 */

6.10.4 関連メッセージ

なし。

6.10.5 対応バージョン

1.0.0


Next: , Previous: E0013, Up: Messages

6.11 E0014

6.11.1 メッセージ本文

ラベルのアドレスを取得するための && 単項演算子は GCC 独自の拡張機能です。

6.11.2 内容

ラベルを値として使用する GCC 拡張機能 (Labels as Values) を使用した場合に出力され ます。

6.11.3 サンプルコード

void *label_ptr = &&foo; /* E0014 */
goto *label_ptr; /* E0015 */
foo:;

6.11.4 関連メッセージ

6.11.5 対応バージョン

1.0.0


Next: , Previous: E0014, Up: Messages

6.12 E0015

6.12.1 メッセージ本文

ラベルのアドレスを指定した goto 文は GCC 独自の拡張機能です。

6.12.2 内容

ラベルを値として使用する GCC 拡張機能 (Labels as Values) を使用した場合に出力され ます。

6.12.3 サンプルコード

void *label_ptr = &&foo; /* E0014 */
goto *label_ptr; /* E0015 */
foo:;

6.12.4 関連メッセージ

6.12.5 対応バージョン

1.0.0


Next: , Previous: E0015, Up: Messages

6.13 E0016

6.13.1 メッセージ本文

終了しないコメントブロックが見つかりました。

6.13.2 内容

/* で開始するブロックコメントが */ で終了されない状態で、翻訳単位 の末尾に到達した場合に出力されます。

6.13.3 サンプルコード

なし。

6.13.4 関連メッセージ

なし。

6.13.5 対応バージョン

1.0.0


Next: , Previous: E0016, Up: Messages

6.14 E0018

6.14.1 メッセージ本文

大域スコープに余分なセミコロンが見つかりました。

6.14.2 内容

大域スコープ中にセミコロンが単独で現れた場合に出力されます。

6.14.3 サンプルコード

int foo(int i)
{
    return i + 1;
}; /* E0018 */

6.14.4 関連メッセージ

なし。

6.14.5 対応バージョン

3.2.6


Next: , Previous: E0018, Up: Messages

6.15 W0001

6.15.1 メッセージ本文

括弧 `()' のネストの深さが 32 を超えています。このプログラムは、ISO C90 標準規格に厳密に合致していません。

6.15.2 内容

括弧の入れ子レベルは最大 32 までと ISO C 標準規格で定められています。この水準を超えると移植性を損ないます。

6.15.3 サンプルコード

int a = 10;
int b = 20;
int c = (((((((((((((((((((((((((((((((((a + b))))))))))))))))))))))))))))))))); /* W0001 */

6.15.4 関連メッセージ

なし。

6.15.5 対応バージョン

1.0.0


Next: , Previous: W0001, Up: Messages

6.16 W0002

6.16.1 メッセージ本文

関数 `%s()' の定義において、識別子と仮引数宣言を分けて記述するのは、古いスタイルです。

6.16.2 内容

非 ANSI の関数定義は、いまや多くのエンジニアにとって馴染みがないものといえます。そのようなエンジニアにとって、解析性が低くなります。

6.16.3 サンプルコード

/* function definition in K&R style */
int func(arg) /* W0002 */
char arg;
{
    return 0;
}

6.16.4 関連メッセージ

なし。

6.16.5 対応バージョン

1.0.0


Next: , Previous: W0002, Up: Messages

6.17 W0003

6.17.1 メッセージ本文

この switch 文には default ラベルが含まれていません。

6.17.2 内容

default 条件を持たない switch 文では、case ラベルの条件に該当しない場合に何も処理が行われないことになり、多くの場合、プログラマの意図しない動作になります。

6.17.3 サンプルコード

int foo(int i)
{
    int j;

    switch(i) { /* W0003 */
    case 1:
        j = 1;
        break;
    case 2:
        j = 2;
        break;
    case 3:
        j = 3;
        break;
    }

    return j;
}

6.17.4 関連メッセージ

なし。

6.17.5 対応バージョン

1.0.0


Next: , Previous: W0003, Up: Messages

6.18 W0007

6.18.1 メッセージ本文

直前の case 節あるいは default 節の末尾に、break 文または return 文がありません。

6.18.2 内容

case ラベルでは break 文や return 文を書かない限り、次の case ラベルへフォールスルーすることになりますが、 このようなフォールスルーは気づきにくいという点でコードの保守性を低下させます。

6.18.3 サンプルコード

int value;
int number;
switch (number) {
case 1:
    value = 1;
    break;
case 2:
    value = 2;
case 3: /* W0007 */
    value = 3;
    break;
default:
    value = 0;
    break;
}

6.18.4 関連メッセージ

なし。

6.18.5 対応バージョン

1.0.0


Next: , Previous: W0007, Up: Messages

6.19 W0010

6.19.1 メッセージ本文

この三項演算子(条件演算子)のオペランドに副作用があります。

6.19.2 内容

副作用を生じる条件演算子を使用すると、条件によって副作用の内容が変わり、コードが複雑になります。

6.19.3 サンプルコード

x = (a > 0) ? b++ : b--; /* W0010 */

6.19.4 関連メッセージ

なし。

6.19.5 対応バージョン

1.0.0


Next: , Previous: W0010, Up: Messages

6.20 W0013

6.20.1 メッセージ本文

繰り返し文の中で、continue 文が使用されています。

6.20.2 内容

continue 文はしばしば、構造化定理(「順次」「反復」「分岐」)に基づいたコードの構造を壊してしまいます。影響はループ文の中に限定されるため、 goto 文ほど大きなネガティブインパクトはありませんが、利用の際は注意が必要です。

6.20.3 サンプルコード

static void foo(void)
{
    int i;
    int j;

    i++;
    for (i = 1, j = 0; i < 20; i++) {
        j += 2;
        if ((j % i) == 3) {
            continue;  /* W0013 */
        }
    }
}

6.20.4 関連メッセージ

なし。

6.20.5 対応バージョン

1.0.0


Next: , Previous: W0013, Up: Messages

6.21 W0016

6.21.1 メッセージ本文

変換指定子のフィールド幅が 509 文字を超えています。

6.21.2 内容

printf() 関数における変換指定子のフィールド幅は最大 509 文字までと ISO C 標準規格で定められています。この水準を超えると移植性を損ないます。

6.21.3 サンプルコード

printf("%510d\n", a); /* W0016 */

6.21.4 関連メッセージ

6.21.5 対応バージョン

1.0.0


Next: , Previous: W0016, Up: Messages

6.22 W0017

6.22.1 メッセージ本文

変換指定子のフィールド幅が 509 文字を超えています。

6.22.2 内容

scanf() 関数における変換指定子のフィールド幅は最大 509 文字までと ISO C 標準規格で定められています。この水準を超えると移植性を損ないます。

6.22.3 サンプルコード

scanf("%510d", &a); /* W0017 */

6.22.4 関連メッセージ

6.22.5 対応バージョン

1.0.0


Next: , Previous: W0017, Up: Messages

6.23 W0018

6.23.1 メッセージ本文

変換指定子の精度幅が 509 文字を超えています。

6.23.2 内容

変換指定子の精度幅は最大 509 文字までと ISO C 標準規格で定められています。この水準を超えると移植性を損ないます。

6.23.3 サンプルコード

printf("%.510f\n", a); /* W0018 */

6.23.4 関連メッセージ

なし。

6.23.5 対応バージョン

1.0.0


Next: , Previous: W0018, Up: Messages

6.24 W0019

6.24.1 メッセージ本文

このポインタキャストは、const 修飾を削除しているので危険です。

6.24.2 内容

const 修飾された変数は値が変更されないことを前提として使用されます。 そのような変数に const が失われるキャストが実行されると前提が崩れてしまい、意図しない結果を引き起こす可能性があります。

6.24.3 サンプルコード

int *pa;
const int *pb;
pa = (int *) pb; /* W0019 */

6.24.4 関連メッセージ

なし。

6.24.5 対応バージョン

1.0.0


Next: , Previous: W0019, Up: Messages

6.25 W0021

6.25.1 メッセージ本文

このポインタキャストは、volatile 修飾を削除しているので危険です。

6.25.2 内容

volatile 修飾された変数は最適化の対象外にしたいという意図が含まれています。 そのような変数に volatile が失われるキャストが実行されると意図に反して最適化が行われてしまい、 意図しない結果を引き起こす可能性があります。

6.25.3 サンプルコード

int *pa;
volatile int *pb;
pa = (int *) pb; /* W0021 */

6.25.4 関連メッセージ

なし。

6.25.5 対応バージョン

1.0.0


Next: , Previous: W0021, Up: Messages

6.26 W0023

6.26.1 メッセージ本文

ポインタ型の変数に対して算術演算が行われています。

6.26.2 内容

ポインタ演算により意図しないアドレスを使用する可能性が高くなります。

6.26.3 サンプルコード

int *p;
int *q;
long r = p + r; /* W0023 */

6.26.4 関連メッセージ

6.26.5 対応バージョン

1.0.0


Next: , Previous: W0023, Up: Messages

6.27 W0024

6.27.1 メッセージ本文

ポインタ型の変数に対してインクリメントまたはデクリメントが行われています。

6.27.2 内容

ポインタ演算により意図しないアドレスを使用する可能性が高くなります。

6.27.3 サンプルコード

int *p;
p++; /* W0024 */

6.27.4 関連メッセージ

6.27.5 対応バージョン

1.0.0


Next: , Previous: W0024, Up: Messages

6.28 W0025

6.28.1 メッセージ本文

`%s' は、既にこのファイルから直接インクルードされています。

6.28.2 内容

重複したインクルードは意味のない記述です。意味のない不要な記述がコード中にあることで解析性が低下します。

6.28.3 サンプルコード

#include "test.h"
#include "test2.h"
#include "test.h" /* W0025 */

6.28.4 関連メッセージ

6.28.5 対応バージョン

1.0.0


Next: , Previous: W0025, Up: Messages

6.29 W0026

6.29.1 メッセージ本文

`%s' は、既にこのファイルから間接的にインクルードされています。

6.29.2 内容

重複したインクルードは意味のない記述です。意味のない不要な記述がコード中にあることで解析性が低下します。

6.29.3 サンプルコード

test.h

#include "test2.h"

test.c

#include "test.h"
#include "test2.h" /* W0026 */

6.29.4 関連メッセージ

6.29.5 対応バージョン

1.0.0


Next: , Previous: W0026, Up: Messages

6.30 W0027

6.30.1 メッセージ本文

ポインタ型の変数に対して比較演算が行われています。

6.30.2 内容

比較演算子を用いて異なる配列のポインタや異なる構造体のポインタと比較する動作は ISO C90 で未定義のため、予期しない動作を引き起こす可能性があります。

6.30.3 サンプルコード

int *p;
int *q;
if (p < q) { /* W0027 */

6.30.4 関連メッセージ

なし。

6.30.5 対応バージョン

1.0.0


Next: , Previous: W0027, Up: Messages

6.31 W0028

6.31.1 メッセージ本文

NULL ポインタに対して間接参照が行われています。

6.31.2 内容

NULL ポインタが指す値を間接参照する動作は ISO C90 で未定義のため、予期しない動作を引き起こす可能性があります。

6.31.3 サンプルコード

int i = *(int *) NULL; /* W0028 */

6.31.4 関連メッセージ

なし。

6.31.5 対応バージョン

1.0.0


Next: , Previous: W0028, Up: Messages

6.32 W0030

6.32.1 メッセージ本文

NULL ポインタに対して算術演算が行われています。

6.32.2 内容

NULL ポインタに対する算術演算は ISO C90 で未定義のため、予期しない動作を引き起こす可能性があります。

6.32.3 サンプルコード

int *p;
p = (int *) NULL + 1; /* W0030 */

6.32.4 関連メッセージ

なし。

6.32.5 対応バージョン

1.0.0


Next: , Previous: W0030, Up: Messages

6.33 W0031

6.33.1 メッセージ本文

仮引数 `%s' は、この関数の中で使われていません。

6.33.2 内容

未使用の実引数は資源を無駄に使用するという点で効率性を低下させます。またコード中に無駄な要素があることで解析性が低下します。

6.33.3 サンプルコード

int func(int num) /* W0031 */
{
    return 0;
}

6.33.4 関連メッセージ

なし。

6.33.5 対応バージョン

1.0.0


Next: , Previous: W0031, Up: Messages

6.34 W0033

6.34.1 メッセージ本文

ラベル `%s:' は、この関数の中で使われていないため、削除することができます。

6.34.2 内容

使用されないラベルは無駄な要素といえます。コード中に無駄な要素があることで解析性が低下します。

6.34.3 サンプルコード

void func(void)
{
    int num = 0;
    for (int i =0; i < 10; i++) {
        num++;
    }
ERROR: /* W0033 */
    num = 0;
}

6.34.4 関連メッセージ

なし。

6.34.5 対応バージョン

1.0.0


Next: , Previous: W0033, Up: Messages

6.35 W0035

6.35.1 メッセージ本文

`&&' または `||' の右のオペランドは、算術型またはポインタ型でなければなりません。

6.35.2 内容

ISO C90 では &&|| の右辺はスカラ型でなければならないとされています。 従って構造体型にした場合の動作は未定義なので、予期しない動作を引き起こす可能性があります。

6.35.3 サンプルコード

struct STR {
    int x;
    int y;
};

extern struct STR str;

void func(void)
{
    int x;
    int y;
    x = y && str; /* W0035 */
}

6.35.4 関連メッセージ

なし。

6.35.5 対応バージョン

1.0.0


Next: , Previous: W0035, Up: Messages

6.36 W0036

6.36.1 メッセージ本文

宣言子の中の修飾子の数が 12 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.36.2 内容

ISO C90 では宣言子の修飾子数の制限を 12 と定めています。この制限を超えると移植性が低下します。

6.36.3 サンプルコード

int num[1][2][3][4][5][6][7][8][9][10][11][12][13]; /* W0036 */

6.36.4 関連メッセージ

なし。

6.36.5 対応バージョン

1.0.0


Next: , Previous: W0036, Up: Messages

6.37 W0037

6.37.1 メッセージ本文

構造体または共用体のネストが 15 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.37.2 内容

ISO C90 では構造体や共用体のネスト数の制限を 15 と定めています。この制限を超えると移植性が低下します。

6.37.3 サンプルコード

struct st1 {
  struct st2 {
    struct st3 {
      struct st4 {
        struct st5 {
          struct st6 {
            struct st7 {
              struct st8 {
                struct st9 {
                  struct st10 {
                    struct st11 {
                      struct st12 {
                        struct st13 {
                          struct st14 {
                            struct st15 {
                              struct st16 { /* W0037 */
                                int i;
                              } st16;
                            } st15;
                          } st14;
                        } st13;
                      } st12;
                    } st11;
                  } st10;
                } st9;
              } st8;
            } st7;
          } st6;
        } st5;
      } st5;
    } st3;
  } st2;
};

6.37.4 関連メッセージ

なし。

6.37.5 対応バージョン

1.0.0


Next: , Previous: W0037, Up: Messages

6.38 W0038

6.38.1 メッセージ本文

オブジェクト `%s' のサイズが 32767 バイトを超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.38.2 内容

ISO C90 ではオブジェクトのサイズ制限を 32767 バイトと定めています。この制限を超えると移植性が低下します。

6.38.3 サンプルコード

int num[100][330]; /* W0038 */

6.38.4 関連メッセージ

なし。

6.38.5 対応バージョン

1.0.0


Next: , Previous: W0038, Up: Messages

6.39 W0039

6.39.1 メッセージ本文

ブロックの中のローカルな識別子の数が 127 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.39.2 内容

ISO C90 ではブロックスコープ識別子を持つブロック数の制限を 127 個と定めています。この制限を超えると移植性が低下します。

6.39.3 サンプルコード

void func(void)
{
    int num1,  num2,  num3,  num4,  num5,  num6,  num7,  num8,  num9,  num10;
    int num11, num12, num13, num14, num15, num16, num17, num18, num19, num20;

    ...snip...

    int num111, num112, num113, num114, num115, num116, num117, num118, num119, num120;
    int num121, num122, num123, num124, num125, num126, num127, num128; /* W0039 */
}

6.39.4 関連メッセージ

なし。

6.39.5 対応バージョン

1.0.0


Next: , Previous: W0039, Up: Messages

6.40 W0040

6.40.1 メッセージ本文

ビットフィールドが signed または unsigned 付きで宣言されていません。

6.40.2 内容

単なる int 型でビットフィールドを定義した場合、signed int になるか unsigned int になるかは処理系依存になります。 従って、プログラマが意図しない型になる可能性があります。

6.40.3 サンプルコード

struct STR { /* W0040 */
    int a:5;
};

6.40.4 関連メッセージ

なし。

6.40.5 対応バージョン

1.0.0


Next: , Previous: W0040, Up: Messages

6.41 W0041

6.41.1 メッセージ本文

構造体または共用体のメンバの数が 127 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.41.2 内容

ISO C90 では構造体や共用体のメンバ数の制限を 127 と定めています。この制限を超えると移植性が低下します。

6.41.3 サンプルコード

struct STR {
    int num1;
    int num2;
    int num3;
    int num4;
    int num5;

    ...snip...

    int num125;
    int num126;
    int num127;
    int num128; /* W0041 */
};

6.41.4 関連メッセージ

なし。

6.41.5 対応バージョン

1.0.0


Next: , Previous: W0041, Up: Messages

6.42 W0042

6.42.1 メッセージ本文

列挙定数の数が 127 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.42.2 内容

ISO C90 では列挙定数の制限を 127 と定めています。この制限を超えると移植性が低下します。

6.42.3 サンプルコード

enum ENM {
    e1,  e2,  e3,  e4,  e5,  e6,  e7,  e8,  e9,  e10,
    e11, e12, e13, e14, e15, e16, e17, e18, e19, e20,

    ...snip...

    e111, e112, e113, e114, e115, e116, e117, e118, e119, e120,
    e121, e122, e123, e124, e125, e126, e127, e128 /* W0042 */
};

6.42.4 関連メッセージ

なし。

6.42.5 対応バージョン

1.0.0


Next: , Previous: W0042, Up: Messages

6.43 W0043

6.43.1 メッセージ本文

配列の初期値が、宣言された配列のサイズに足りません。残りの配列要素はゼロで初期化されます。

6.43.2 内容

初期化子が不足する場合は 0 で初期化されますが、意図したものか、そうでないかが分かりづらくなります。 初期化子を指定する場合には、要素数と初期値の数を一致させることが望ましいです。

6.43.3 サンプルコード

int array[5] = { 1, 2, 3 }; /* W0043 */

6.43.4 関連メッセージ

なし。

6.43.5 対応バージョン

1.0.0


Next: , Previous: W0043, Up: Messages

6.44 W0049

6.44.1 メッセージ本文

制御構造のネストが 15 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.44.2 内容

ISO C90 では制御構造のネスト数の制限を 15 と定めています。この制限を超えると移植性が低下します。

6.44.3 サンプルコード

if(x > 0) {
  if(x > 0) {
    if(x > 0) {
      if(x > 0) {
        if(x > 0) {
          if(x > 0) {
            if(x > 0) {
              if(x > 0) {
                if(x > 0) {
                  if(x > 0) {
                    if(x > 0) {
                      if(x > 0) {
                        if(x > 0) {
                          if(x > 0) {
                            if (x > 0) {
                              if(x > 0) { /* W0049 */
                                ;
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

6.44.4 関連メッセージ

なし。

6.44.5 対応バージョン

1.0.0


Next: , Previous: W0049, Up: Messages

6.45 W0050

6.45.1 メッセージ本文

case ラベルの数が 257 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.45.2 内容

ISO C90 では case ラベルの制限を 257 と定めています。この制限を超えると移植性が低下します。

6.45.3 サンプルコード

switch (num) {
case 1:
    break;
case 2:
    break;
case 3:
    break;

  ...snip...

case 257:
    break;
case 258: /* W0050 */
    break;
}

6.45.4 関連メッセージ

なし。

6.45.5 対応バージョン

1.0.0


Next: , Previous: W0050, Up: Messages

6.46 W0051

6.46.1 メッセージ本文

外部識別子 `%s' が他の識別子名と、リンカ特性で指定された文字数の範囲内で区別できません。

6.46.2 内容

処理系で決められている文字数の制限を超えた場合の動作は未定義なので、予期しない動作を引き起こす可能性があります。

6.46.3 サンプルコード

extern int very_long_long_long_ ...snip... _long_external_symbol; /* W0051 */

6.46.4 関連メッセージ

6.46.5 対応バージョン

1.0.0


Next: , Previous: W0051, Up: Messages

6.47 W0052

6.47.1 メッセージ本文

識別子名 `%s' が他の識別子名と、コンパイラ特性で指定された文字数の範囲内で区別できません。

6.47.2 内容

処理系で決められている文字数の制限(原則 31 文字)を超えた場合の動作は未定義なので、予期しない動作を引き起こす可能性があります。

6.47.3 サンプルコード

void func(void)
{
    int very_long_long_long_long_long_ ...snip... _long_symbol; /* W0052 */
}

6.47.4 関連メッセージ

6.47.5 対応バージョン

1.0.0


Next: , Previous: W0052, Up: Messages

6.48 W0053

6.48.1 メッセージ本文

`#include "%s"' のネストが 8 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.48.2 内容

ISO C90 では include の入れ子レベルの制限を 8 と定めています。この制限を超えると移植性が低下します。

6.48.3 サンプルコード

test.c

#include "test1.h"

test1.h

#include "test2.h"

test2.h

#include "test3.h"

test3.h

#include "test4.h"

test4.h

#include "test5.h"

test5.h

#include "test6.h"

test6.h

#include "test7.h"

test7.h

#include "test8.h"

test8.h

#include "test9.h"

test9.h

#include "test10.h" /* W0053 */

6.48.4 関連メッセージ

なし。

6.48.5 対応バージョン

1.0.0


Next: , Previous: W0053, Up: Messages

6.49 W0054

6.49.1 メッセージ本文

`#if...' のネストの最大値が 8 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.49.2 内容

ISO C90 では #if の入れ子レベルの制限を 8 と定めています。この制限を超えると移植性が低下します。

6.49.3 サンプルコード

#if N > 1
#if N > 2
#if N > 3
#if N > 4
#if N > 5
#if N > 6
#if N > 7
#if N > 8 /* W0054 */
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif

6.49.4 関連メッセージ

なし。

6.49.5 対応バージョン

1.0.0


Next: , Previous: W0054, Up: Messages

6.50 W0055

6.50.1 メッセージ本文

マクロ定義の数が 1024 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.50.2 内容

ISO C90 では一つの翻訳単位中で定義できるマクロの制限を 1024 と定めています。この制限を超えると移植性が低下します。

6.50.3 サンプルコード

#define MACRO_1
#define MACRO_2
#define MACRO_3

...snip...

#define MACRO_1023
#define MACRO_1024
#define MACRO_1025 /* W0055 */

6.50.4 関連メッセージ

なし。

6.50.5 対応バージョン

1.0.0


Next: , Previous: W0055, Up: Messages

6.51 W0056

6.51.1 メッセージ本文

関数形式マクロの仮引数の数が 31 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.51.2 内容

ISO C90 ではマクロ引数数の制限を 31 と定めています。この制限を超えると移植性が低下します。

6.51.3 サンプルコード

#define MACRO(a1, a2, a3, ...snip... a30, a31, a32) /* W0056 */

6.51.4 関連メッセージ

なし。

6.51.5 対応バージョン

1.0.0


Next: , Previous: W0056, Up: Messages

6.52 W0057

6.52.1 メッセージ本文

関数形式マクロの呼び出しの実引数の数が 31 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.52.2 内容

ISO C90 ではマクロ呼び出しの引数数の制限を 31 と定めています。この制限を超えると移植性が低下します。

6.52.3 サンプルコード

int i = MACRO(1, 2, 3 ...snip... 30, 31, 32); /* W0057 */

6.52.4 関連メッセージ

なし。

6.52.5 対応バージョン

1.0.0


Next: , Previous: W0057, Up: Messages

6.53 W0058

6.53.1 メッセージ本文

文字列リテラルの文字数が 509 を超えました。このプログラムは ISO C90 標準規格に厳密に準拠していません。

6.53.2 内容

ISO C90 では文字列リテラルの文字数の制限を 509 と定めています。この制限を超えると移植性が低下します。

6.53.3 サンプルコード

char buf[] = "very long long long ...snip... long string literal"; /* W0058 */

6.53.4 関連メッセージ

なし。

6.53.5 対応バージョン

1.0.0


Next: , Previous: W0058, Up: Messages

6.54 W0059

6.54.1 メッセージ本文

このファイルの行末に Ctrl-M(^M) 制御文字が見つかりました。

6.54.2 内容

PC で作成したソースには機種依存の制御コードが使用されることがあります。 このような制御コードを無視せず、意図しない処理をする処理系が存在する可能性があります。 従ってこのような機種依存の記述は移植性を低下させます。

6.54.3 サンプルコード

なし。

6.54.4 関連メッセージ

6.54.5 対応バージョン

1.0.0


Next: , Previous: W0059, Up: Messages

6.55 W0060

6.55.1 メッセージ本文

このファイル内に Ctrl-Z(^Z) 制御文字が見つかりました。

6.55.2 内容

PC で作成したソースには機種依存の制御コードが使用されることがあります。 このような制御コードを無視せず、意図しない処理をしてしまう処理系が存在する可能性があります。 従ってこのような機種依存の記述は移植性を低下させます。

6.55.3 サンプルコード

なし。

6.55.4 関連メッセージ

6.55.5 対応バージョン

1.0.0


Next: , Previous: W0060, Up: Messages

6.56 W0061

6.56.1 メッセージ本文

`%s' は ISO C 標準規格の正式な予約語ではありません。言語拡張と見なし無視します。

6.56.2 内容

ある特定のコンパイラで定義されている言語拡張を使用すると移植性が低下します。

6.56.3 サンプルコード

extern int func(void) __attribute__ ((__const__)); /* W0061 */

6.56.4 関連メッセージ

6.56.5 対応バージョン

1.0.0


Next: , Previous: W0061, Up: Messages

6.57 W0062

6.57.1 メッセージ本文

`__typeof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。

6.57.2 内容

ある特定のコンパイラで定義されている言語拡張を使用すると移植性が低下します。

6.57.3 サンプルコード

#define DEF_FUNPTR(func) __typeof__(func) *ptr_##func = 0
DEF_FUNPTR(main); /* W0062 */

6.57.4 関連メッセージ

6.57.5 対応バージョン

1.0.0


Next: , Previous: W0062, Up: Messages

6.58 W0063

6.58.1 メッセージ本文

`__alignof__' は ISO C 標準規格ではサポートされていません。言語拡張と見なします。

6.58.2 内容

ある特定のコンパイラで定義されている言語拡張を使用すると移植性が低下します。

6.58.3 サンプルコード

int a = __alignof__(struct sockaddr *) /* W0063 */

6.58.4 関連メッセージ

6.58.5 対応バージョン

1.0.0


Next: , Previous: W0063, Up: Messages

6.59 W0064

6.59.1 メッセージ本文

2 進数整数リテラルが使われています。これは言語拡張です。

6.59.2 内容

2 進数定数が認められている場合、それは言語拡張と考えられます。言語拡張を使用すると移植性が低下します。

6.59.3 サンプルコード

unsigned char c = 0b00000001; /* W0064 */

6.59.4 関連メッセージ

なし。

6.59.5 対応バージョン

1.0.0


Next: , Previous: W0064, Up: Messages

6.60 W0065

6.60.1 メッセージ本文

代入演算子の左オペランドをキャストしてはなりません。

6.60.2 内容

左オペランドに対するキャストが認められている場合、それは言語拡張と考えられます。 言語拡張を使用すると移植性が低下します。

6.60.3 サンプルコード

void func(int num)
{
    (unsigned short) num = 100U; /* W0065 */
}

6.60.4 関連メッセージ

なし。

6.60.5 対応バージョン

1.0.0


Next: , Previous: W0065, Up: Messages

6.61 W0066

6.61.1 メッセージ本文

`main()' 関数は、`int (void)' または `int (int, char *[])' のどちらかでなければなりません。

6.61.2 内容

int main(void) または int main(int, char*[]) 以外の形式の main 関数の定義が認められている場合、それは言語拡張と考えられます。

6.61.3 サンプルコード

void main(void) {} /* W0066 */

6.61.4 関連メッセージ

なし。

6.61.5 対応バージョン

1.0.0


Next: , Previous: W0066, Up: Messages

6.62 W0067

6.62.1 メッセージ本文

ネストされた構造体のメンバに直接アクセスしています。これは言語拡張です。

6.62.2 内容

入れ子の構造体への直接アクセスや特定ビットへの直接アクセスが認められている場合、 それは言語拡張と考えられます。言語拡張を使用すると移植性が低下します。

6.62.3 サンプルコード

struct BBB {
    int mb;
    struct AAA {
        int ma;
    };
} bbb;

bbb.ma = 1; /* W0067 */

6.62.4 関連メッセージ

6.62.5 対応バージョン

1.0.0


Next: , Previous: W0067, Up: Messages

6.63 W0068

6.63.1 メッセージ本文

ビットにアクセスするために `.' を使っています。これは言語拡張です。

6.63.2 内容

入れ子の構造体への直接アクセスや特定ビットへの直接アクセスが認められている場合、 それは言語拡張と考えられます。言語拡張を使用すると移植性が低下します。

6.63.3 サンプルコード

unsigned short a;

a.2 = 0; /* W0068 */

6.63.4 関連メッセージ

6.63.5 対応バージョン

1.0.0


Next: , Previous: W0068, Up: Messages

6.64 W0069

6.64.1 メッセージ本文

`/*' で始まるコメントの中に `/*' が見つかりました。ネストされたコメントは、ISO C 標準規格では認められていません。

6.64.2 内容

/* コメントの入れ子は ISO C90 では認められていません。 入れ子によって即問題に直結するわけではありませんが、 内側のコメントの終端 */ によって外側のコメントが終了してしまうことで 予期しない動作を引き起こす可能性があります。

6.64.3 サンプルコード

/* /* W0069 */ */

6.64.4 関連メッセージ

なし。

6.64.5 対応バージョン

1.0.0


Next: , Previous: W0069, Up: Messages

6.65 W0070

6.65.1 メッセージ本文

インクルードされている <%s> の内容は翻訳単位の中で全く参照されていません。削除することができます。

6.65.2 内容

参照しないヘッダファイルをインクルードすることは無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.65.3 サンプルコード

なし。

6.65.4 関連メッセージ

6.65.5 対応バージョン

1.0.0


Next: , Previous: W0070, Up: Messages

6.66 W0071

6.66.1 メッセージ本文

インクルードされている "%s" の内容は翻訳単位の中で全く参照されていません。削除することができます。

6.66.2 内容

参照しないヘッダファイルをインクルードすることは無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.66.3 サンプルコード

なし。

6.66.4 関連メッセージ

6.66.5 対応バージョン

1.0.0


Next: , Previous: W0071, Up: Messages

6.67 W0072

6.67.1 メッセージ本文

基本ソース文字集合に含まれない文字が、ヘッダファイル名で使われています。

6.67.2 内容

ISO C90 では処理できる最小限の文字集合を定めています。この集合に当てはまらない文字を処理する場合は処理系定義の動作となります。 処理系定義の動作を使用すると移植性が低下します。

6.67.3 サンプルコード

#include <test$.h> /* W0072 */

6.67.4 関連メッセージ

なし。

6.67.5 対応バージョン

1.0.0


Next: , Previous: W0072, Up: Messages

6.68 W0073

6.68.1 メッセージ本文

このインクルードファイルには、インクルードガードが記述されていません。

6.68.2 内容

重複インクルードは型の再定義に関するエラーを引き起こす原因になります。

6.68.3 サンプルコード

なし。

6.68.4 関連メッセージ

なし。

6.68.5 対応バージョン

1.0.0


Next: , Previous: W0073, Up: Messages

6.69 W0076

6.69.1 メッセージ本文

この 16 進整数リテラルには、接尾語 `U' または `u' が付けられていません。

6.69.2 内容

整数定数の値は、規格で指定された型のうち、その値を表現できる最初の型になります。 つまり、接尾語 "U" を使用していない 16 進定数は、 unsigned を意図していても、signed 型で表現できる場合は signed となります。 例えば、0x8000 は、int の実装サイズが 16bit の場合 unsigned int になりますが、 int の実装サイズが 32bit の場合 signed int 型になります。 このように、16 進定数に接尾語 "U" を使用していない時、 signedunsigned のどちらになるのかが判断しづらくなります。

6.69.3 サンプルコード

unsigned int num = 0x1234; /* W0076 */

6.69.4 関連メッセージ

なし。

6.69.5 対応バージョン

1.0.0


Next: , Previous: W0076, Up: Messages

6.70 W0077

6.70.1 メッセージ本文

接尾語として小文字の `l' が整数または浮動小数点数に付けられています。

6.70.2 内容

long 型を表す接尾語 "l" の使用は、数字の "1" と間違えられやすいため解析性が低下します。

6.70.3 サンプルコード

long a = 0x1000l; /* W0077 */
long b = 0x1000L; /* OK */

6.70.4 関連メッセージ

なし。

6.70.5 対応バージョン

1.0.0


Next: , Previous: W0077, Up: Messages

6.71 W0078

6.71.1 メッセージ本文

仮引数並びがない関数が宣言されています。

6.71.2 内容

仮引数の並びが空の関数宣言は旧式 (K&R) の文法であり、 これが現在でも利用できるのはコンパイラが旧式の文法の一部をサポートしているためです。 このようなコンパイラの配慮に依存したコードは将来的に変更を余儀なくされる未成熟なコードといえます。

6.71.3 サンプルコード

int sample() /* W0078 */
{
    return 0;
}

6.71.4 関連メッセージ

なし。

6.71.5 対応バージョン

1.0.0


Next: , Previous: W0078, Up: Messages

6.72 W0079

6.72.1 メッセージ本文

この配列は、初期値の文字列リテラルの終端文字 `\0' を保持できません。

6.72.2 内容

文字列配列はターミネータとして終端にヌル文字が入っていることを想定して使用される場合が多くあります。 例えば、文字数を数えるために終端のヌル文字が見つかるまで反復処理するような使用法が挙げられます。 このような処理を、ヌル文字を保持していない文字列配列に行った場合、無限ループに陥ってしまいます。

6.72.3 サンプルコード

char text[3] = "ABC"; /* W0079 */

6.72.4 関連メッセージ

なし。

6.72.5 対応バージョン

1.0.0


Next: , Previous: W0079, Up: Messages

6.73 W0080

6.73.1 メッセージ本文

const 修飾されたグローバルオブジェクトが、明示的に初期化されずに定義されています。

6.73.2 内容

const 指定されている変数は、値を代入することができませんので、宣言時に初期化する必要があります。 従って、const 指定されており、宣言時に初期化されていない変数は使いようのない無駄なデータということになります。 無駄なものは、メモリ資源を消費する、ソースコードの可読性を低下させる、などのデメリットがあります。

6.73.3 サンプルコード

const int num; /* W0080 */

6.73.4 関連メッセージ

なし。

6.73.5 対応バージョン

1.0.0


Next: , Previous: W0080, Up: Messages

6.74 W0081

6.74.1 メッセージ本文

単項演算子 `-' を unsigned int 型、unsigned long 型、unsigned long long 型のオペランドに対して使うと、符号無し型になってしまいます。

6.74.2 内容

符号なし型の変数に、単項演算子 "-" を使用すると結果は処理系定義、または未定義の動作になります。 従って、予期しない動作を引き起こす可能性があります。

6.74.3 サンプルコード

unsigned long num = 0;
long val = -num; /* W0081 */

6.74.4 関連メッセージ

なし。

6.74.5 対応バージョン

1.0.0


Next: , Previous: W0081, Up: Messages

6.75 W0082

6.75.1 メッセージ本文

単項演算子 `-' を符号無しの潜在型 `%s' のオペランドに対して使っています。

6.75.2 内容

符号なし型の変数に、単項演算子 "-" を使用すると結果は処理系定義、または未定義の動作になります。従って、予期しない動作を引き起こす可能性があります。

6.75.3 サンプルコード

unsigned short num = 20;
int val = -num; /* W0082 */

6.75.4 関連メッセージ

なし。

6.75.5 対応バージョン

1.0.0


Next: , Previous: W0082, Up: Messages

6.76 W0084

6.76.1 メッセージ本文

このカンマ演算子 `,' の左オペランドには副作用をもつ式が記述されていません。

6.76.2 内容

副作用がない文は無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.76.3 サンプルコード

int a = 0;
int b = 1;

a, b++; /* W0084 */

6.76.4 関連メッセージ

6.76.5 対応バージョン

1.0.0


Next: , Previous: W0084, Up: Messages

6.77 W0085

6.77.1 メッセージ本文

この文には副作用がありません。誤りのある可能性が高いです。

6.77.2 内容

副作用がない文は無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.77.3 サンプルコード

a; /* W0085 */

6.77.4 関連メッセージ

6.77.5 対応バージョン

1.0.0


Next: , Previous: W0085, Up: Messages

6.78 W0086

6.78.1 メッセージ本文

三項演算子(条件演算子)の中で、2 番目あるいは 3 番目のオペランドは、副作用がない冗長な式です。

6.78.2 内容

副作用がない文は無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.78.3 サンプルコード

int a;
int b;

(a < 0) ? b : b++; /* W0086 */

6.78.4 関連メッセージ

6.78.5 対応バージョン

1.0.0


Next: , Previous: W0086, Up: Messages

6.79 W0087

6.79.1 メッセージ本文

カンマ演算子の右側の式は、副作用がない冗長な式です。

6.79.2 内容

副作用がない文は無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.79.3 サンプルコード

int a = 0;
int b = 1;

a++, b; /* W0087 */

6.79.4 関連メッセージ

6.79.5 対応バージョン

1.0.0


Next: , Previous: W0087, Up: Messages

6.80 W0088

6.80.1 メッセージ本文

論理演算子の右側の式は、副作用がない冗長な式です。

6.80.2 内容

副作用がない文は無駄な文だと言えます。コード中に無駄な文があることで解析性が低下します。

6.80.3 サンプルコード

(a < 0) && func(a) && func(b) && c; /* W0088 */

6.80.4 関連メッセージ

6.80.5 対応バージョン

1.0.0


Next: , Previous: W0088, Up: Messages

6.81 W0093

6.81.1 メッセージ本文

ゼロで除算される恐れがあります。

6.81.2 内容

ゼロでの除算は、未定義の動作のため、予期しない動作を引き起こす可能性があります。

6.81.3 サンプルコード

int func(int a, int b)
{
    if (b > 0) {
        return a / b; /* OK */
    }
    return a / b; /* W0093 */
}

6.81.4 関連メッセージ

6.81.5 対応バージョン

1.0.0


Next: , Previous: W0093, Up: Messages

6.82 W0096

6.82.1 メッセージ本文

ゼロになる定数式で除算しています。

6.82.2 内容

ゼロでの除算は、未定義の動作のため、予期しない動作を引き起こす可能性があります。

6.82.3 サンプルコード

#define A (0)

int b = 10 / A; /* W0096 */

6.82.4 関連メッセージ

6.82.5 対応バージョン

1.0.0


Next: , Previous: W0096, Up: Messages

6.83 W0097

6.83.1 メッセージ本文

ゼロの値で除算しています。

6.83.2 内容

ゼロでの除算は、未定義の動作のため、予期しない動作を引き起こす可能性があります。

6.83.3 サンプルコード

int func(int a, int b)
{
    if (a < 0) {
        ...snip...
    }
    else {
        ...snip...
        if (a < 1) {
            return b / a; /* W0097 */
        }
    }
}

6.83.4 関連メッセージ

6.83.5 対応バージョン

1.0.0


Next: , Previous: W0097, Up: Messages

6.84 W0100

6.84.1 メッセージ本文

変数 `%s' は初期値を設定後に再代入されません。変数を const 付きで初期値を指定して定義できる可能性があります。

6.84.2 内容

このような変数は、値を変更しても良いか否かがわかりづらいといった問題があります。

6.84.3 サンプルコード

int func(int a)
{
    int b = a; /* W0100 */
    return b;
}

6.84.4 関連メッセージ

なし。

6.84.5 対応バージョン

1.0.0


Next: , Previous: W0100, Up: Messages

6.85 W0101

6.85.1 メッセージ本文

自動変数のアドレスが、より長い寿命を持つポインタに代入されています。このプログラムは危険です。

6.85.2 内容

ある関数で宣言された自動変数のスコープはその関数内に限定されますが、 その自動変数のアドレスをより大きなスコープを持つポインタに代入して使用した場合、 あたかもそのポインタが有効なスコープで自動変数のアドレスを扱うようなソースコードになります。 しかし実際は、関数内で宣言された自動変数は、その関数を抜けた時点でスコープを外れるため、 その自動変数のポインタも無効になります。 従って、自動変数のポインタをより大きいスコープを持つポインタへ代入することは、 無効なポインタを意図しないタイミングで使う可能性を生じさせるため危険です。

6.85.3 サンプルコード

extern long *ptr;

void func()
{
    long value = 0;
    ptr = &value; /* W0101 */
}

6.85.4 関連メッセージ

なし。

6.85.5 対応バージョン

1.0.0


Next: , Previous: W0101, Up: Messages

6.86 W0102

6.86.1 メッセージ本文

自動変数のアドレスが、関数の仮引数を介して戻されています。このプログラムは危険です。

6.86.2 内容

関数内で宣言された自動変数は、関数の実行が終了した時点で無効になります。 そのような変数のアドレスは、いつ別の変数のメモリ領域として使用されるかわかりません。

6.86.3 サンプルコード

void func(int **ptr)
{
    int num;
    *ptr = &num; /* W0102 */
}

6.86.4 関連メッセージ

6.86.5 対応バージョン

1.0.0


Next: , Previous: W0102, Up: Messages

6.87 W0103

6.87.1 メッセージ本文

自動変数のアドレスが、戻り値として関数から返されています。このプログラムは危険です。

6.87.2 内容

関数内で宣言された自動変数は、関数の実行が終了した時点で無効になります。 そのような変数のアドレスは、いつ別の変数のメモリ領域として使用されるかわかりません。

6.87.3 サンプルコード

char *foo1(void)
{
    char a[3];
    return a; /* W0103 */
}

6.87.4 関連メッセージ

6.87.5 対応バージョン

1.0.0


Next: , Previous: W0103, Up: Messages

6.88 W0104

6.88.1 メッセージ本文

仮引数 `%s' は値が変わりません。const 付きで宣言できる可能性があります。

6.88.2 内容

このような引数は、値を変更しても良いか否かがわかりづらいといった問題があります。

6.88.3 サンプルコード

void func(int val) /* W0104 */
{
    const int num = val + 1;
}

6.88.4 関連メッセージ

6.88.5 対応バージョン

1.0.0


Next: , Previous: W0104, Up: Messages

6.89 W0105

6.89.1 メッセージ本文

ポインタ仮引数 `%s' が指しているオブジェクトは関数内で変わらないので、const オブジェクトを指すポインタ型として宣言できる可能性があります。

6.89.2 内容

このような引数は、値を変更しても良いか否かがわかりづらいといった問題があります。

6.89.3 サンプルコード

void func(int *val) /* W0105 */
{
    const int num = *val;
}

6.89.4 関連メッセージ

6.89.5 対応バージョン

1.0.0


Next: , Previous: W0105, Up: Messages

6.90 W0107

6.90.1 メッセージ本文

自動変数のアドレスが、static 付きローカルポインタに代入されています。このプログラムは危険です。

6.90.2 内容

関数のスコープを抜けると自動記憶域期間を持つオブジェクトが無効になる一方で、 静的記憶域期間を持つオブジェクトは無効になりません。 従って、静的記憶域期間を持つポインタに自動記憶域期間を持つオブジェクトのアドレスを代入することは危険です。

6.90.3 サンプルコード

void foo()
{
    static int *p;
    int b = 100;

    p = &b; /* W0107 */
}

6.90.4 関連メッセージ

なし。

6.90.5 対応バージョン

1.0.0


Next: , Previous: W0107, Up: Messages

6.91 W0108

6.91.1 メッセージ本文

代入演算子が論理演算式の中で使われています。

6.91.2 内容

実質的にブール型として使用されている変数に対する代入演算子や複合代入演算子の使用は、 どのように解釈してよいかがわかりづらく、コードを複雑にします。

6.91.3 サンプルコード

int a;
int b;

if (a = b) { /* W0108 */
}

6.91.4 関連メッセージ

なし。

6.91.5 対応バージョン

1.0.0


Next: , Previous: W0108, Up: Messages

6.92 W0109

6.92.1 メッセージ本文

この関数の宣言が見つかりません。省略されたものとみなし、`extern int %s()' を挿入します。

6.92.2 内容

ISO C90 では、関数は使用される前に定義もしくはプロトタイプ宣言すべきとされています。 定義もしくはプロトタイプ宣言なしで使用する場合は、暗黙の宣言があるものと見なされます。 しかし、このような規格の配慮に依存したコードは将来的に変更を余儀なくされる未成熟なコードといえます。

6.92.3 サンプルコード

void func()
{
    foo(); /* W0109 */
}

6.92.4 関連メッセージ

なし。

6.92.5 対応バージョン

1.0.0


Next: , Previous: W0109, Up: Messages

6.93 W0110

6.93.1 メッセージ本文

浮動小数点型の変数が for 文のループカウンタとして使われています。

6.93.2 内容

ループカウンタ(ループの制御変数)の型を浮動小数点型にした場合、 ループを抜ける条件に等式や不等式を採用した場合に、 ループカウンタの丸め誤差が原因で無限ループになる可能性が高くなります。

6.93.3 サンプルコード

double d;

for (d = 0.0; d != 1.0; d += 0.1) { /* W0110 */
}

6.93.4 関連メッセージ

なし。

6.93.5 対応バージョン

1.0.0


Next: , Previous: W0110, Up: Messages

6.94 W0112

6.94.1 メッセージ本文

浮動小数点の式を等価演算子で比較しています。

6.94.2 内容

浮動小数点型の変数は様々な誤差の影響により、ある数と等式や不等式で比較しても目的の結果を得られるとは限りません。

6.94.3 サンプルコード

double a = 0.1;
a = (a + 0.1) * 5.0;
if (a == 1.0) { /* W0112 */
}

6.94.4 関連メッセージ

なし。

6.94.5 対応バージョン

1.0.0


Next: , Previous: W0112, Up: Messages

6.95 W0114

6.95.1 メッセージ本文

この制御式は明示的な論理演算ではありません。

6.95.2 内容

制御式で比較演算子を使用しないと暗黙的に 0 と比較された結果を判定することになります。 このような比較演算子を用いない書き方はコーディング量が減るメリットよりも解析性が低下するデメリットの方が大きいと考えられます。

6.95.3 サンプルコード

int a;

if (a != 0) { /* OK */
}

if (a) { /* W0114 */
}

6.95.4 関連メッセージ

なし。

6.95.5 対応バージョン

1.0.0


Next: , Previous: W0114, Up: Messages

6.96 W0115

6.96.1 メッセージ本文

符号無し左シフト演算 `<<' は、上位ビットを切り捨てます。

6.96.2 内容

符号なし型の変数に対する左シフト演算は上位ビットを切り詰めて、情報を損失する可能性があります。

6.96.3 サンプルコード

unsigned int func(unsigned int a)
{
    if (a > 0x40000000U) {
        return a << 2; /* W0115 */
    }
}

6.96.4 関連メッセージ

6.96.5 対応バージョン

1.0.0


Next: , Previous: W0115, Up: Messages

6.97 W0116

6.97.1 メッセージ本文

符号無し左シフト演算 `<<' は、上位ビットを切り捨てる恐れがあります。

6.97.2 内容

符号なし型の変数に対する左シフト演算は上位ビットを切り詰めて、情報を損失する可能性があります。

6.97.3 サンプルコード

unsigned int func(unsigned int a)
{
    if (a > 0x40000000U) {
        return a << 1; /* W0116 */
    }
}

6.97.4 関連メッセージ

6.97.5 対応バージョン

1.0.0


Next: , Previous: W0116, Up: Messages

6.98 W0117

6.98.1 メッセージ本文

`%s' の定義は外部結合を持ちますが、定義より前にその宣言がありません。

6.98.2 内容

外部変数や外部関数は複数のファイルで使用されることを想定して宣言されます。 従って、これらはヘッダファイルで宣言され、インクルードして使用されるべきです。 ソースファイルで宣言して使用する場合、ヘッダファイルで宣言して使用するよりも安全性、保守性が低下します。

6.98.3 サンプルコード

void func(void) /* W0117 */
{
    ...snip...
}

6.98.4 関連メッセージ

6.98.5 対応バージョン

1.0.0


Next: , Previous: W0117, Up: Messages

6.99 W0118

6.99.1 メッセージ本文

外部結合を持つ `%s' の宣言が、ヘッダファイルの中にありません。

6.99.2 内容

外部変数や外部関数は複数のファイルで使用されることを想定して宣言されます。 従って、これらはヘッダファイルで宣言され、インクルードして使用されるべきです。 ソースファイルで宣言して使用する場合、ヘッダファイルで宣言して使用するよりも安全性、保守性が低下します。

6.99.3 サンプルコード

test.c

extern int val; /* W0118 */

6.99.4 関連メッセージ

6.99.5 対応バージョン

1.0.0


Next: , Previous: W0118, Up: Messages

6.100 W0119

6.100.1 メッセージ本文

暗黙的に char 型から signed char 型に型変換されています。

6.100.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.100.3 サンプルコード

extern void foo(signed char a);

void bar(char a)
{
    signed char b = a; /* W0119 */
    foo(a); /* W0119 */
}

6.100.4 関連メッセージ

6.100.5 対応バージョン

1.0.0


Next: , Previous: W0119, Up: Messages

6.101 W0120

6.101.1 メッセージ本文

暗黙的に char 型から unsigned char 型に型変換されています。

6.101.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.101.3 サンプルコード

extern void foo(unsigned char a);

void bar(char a)
{
    unsigned char b = a; /* W0120 */
    foo(a); /* W0120 */
}

6.101.4 関連メッセージ

6.101.5 対応バージョン

1.0.0


Next: , Previous: W0120, Up: Messages

6.102 W0121

6.102.1 メッセージ本文

暗黙的に char 型から signed short 型に型変換されています。

6.102.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.102.3 サンプルコード

extern void foo(short a);

void bar(char a)
{
    short b = a; /* W0121 */
    foo(a); /* W0121 */
}

6.102.4 関連メッセージ

6.102.5 対応バージョン

1.0.0


Next: , Previous: W0121, Up: Messages

6.103 W0122

6.103.1 メッセージ本文

暗黙的に char 型から unsigned short 型に型変換されています。

6.103.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.103.3 サンプルコード

extern void foo(unsigned short a);

void bar(char a)
{
    unsigned short b = a; /* W0122 */
    foo(a); /* W0122 */
}

6.103.4 関連メッセージ

6.103.5 対応バージョン

1.0.0


Next: , Previous: W0122, Up: Messages

6.104 W0123

6.104.1 メッセージ本文

暗黙的に char 型から signed int 型に型変換されています。

6.104.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.104.3 サンプルコード

extern void foo(int a);

void bar(char a)
{
    int b = a; /* W0123 */
    foo(a); /* W0123 */
}

6.104.4 関連メッセージ

6.104.5 対応バージョン

1.0.0


Next: , Previous: W0123, Up: Messages

6.105 W0124

6.105.1 メッセージ本文

暗黙的に char 型から unsigned int 型に型変換されています。

6.105.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.105.3 サンプルコード

extern void foo(unsigned int a);

void bar(char a)
{
    unsigned int b = a; /* W0124 */
    foo(a); /* W0124 */
}

6.105.4 関連メッセージ

6.105.5 対応バージョン

1.0.0


Next: , Previous: W0124, Up: Messages

6.106 W0125

6.106.1 メッセージ本文

暗黙的に char 型から signed long 型に型変換されています。

6.106.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.106.3 サンプルコード

extern void foo(long a);

void bar(char a)
{
    long b = a; /* W0125 */
    foo(a); /* W0125 */
}

6.106.4 関連メッセージ

6.106.5 対応バージョン

1.0.0


Next: , Previous: W0125, Up: Messages

6.107 W0126

6.107.1 メッセージ本文

暗黙的に char 型から unsigned long 型に型変換されています。

6.107.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.107.3 サンプルコード

extern void foo(unsigned long a);

void bar(char a)
{
    unsigned long b = a; /* W0126 */
    foo(a); /* W0126 */
}

6.107.4 関連メッセージ

6.107.5 対応バージョン

1.0.0


Next: , Previous: W0126, Up: Messages

6.108 W0127

6.108.1 メッセージ本文

暗黙的に char 型から float 型に型変換されています。

6.108.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.108.3 サンプルコード

extern void foo(float a);

void bar(char a)
{
    float b = a; /* W0127 */
    foo(a); /* W0127 */
}

6.108.4 関連メッセージ

6.108.5 対応バージョン

1.0.0


Next: , Previous: W0127, Up: Messages

6.109 W0128

6.109.1 メッセージ本文

暗黙的に char 型から double 型に型変換されています。

6.109.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.109.3 サンプルコード

extern void foo(double a);

void bar(char a)
{
    double b = a; /* W0128 */
    foo(a); /* W0128 */
}

6.109.4 関連メッセージ

6.109.5 対応バージョン

1.0.0


Next: , Previous: W0128, Up: Messages

6.110 W0129

6.110.1 メッセージ本文

暗黙的に char 型から long double 型に型変換されています。

6.110.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.110.3 サンプルコード

extern void foo(long double a);

void bar(char a)
{
    long double b = a; /* W0129 */
    foo(a); /* W0129 */
}

6.110.4 関連メッセージ

6.110.5 対応バージョン

1.0.0


Next: , Previous: W0129, Up: Messages

6.111 W0130

6.111.1 メッセージ本文

暗黙的に char 型から signed long long 型に型変換されています。

6.111.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.111.3 サンプルコード

extern void foo(long long a);

void bar(char a)
{
    long long b = a; /* W0130 */
    foo(a); /* W0130 */
}

6.111.4 関連メッセージ

6.111.5 対応バージョン

1.0.0


Next: , Previous: W0130, Up: Messages

6.112 W0131

6.112.1 メッセージ本文

暗黙的に char 型から unsigned long long 型に型変換されています。

6.112.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。

6.112.3 サンプルコード

extern void foo(unsigned long long a);

void bar(char a)
{
    unsigned long long b = a; /* W0131 */
    foo(a); /* W0131 */
}

6.112.4 関連メッセージ

6.112.5 対応バージョン

1.0.0


Next: , Previous: W0131, Up: Messages

6.113 W0132

6.113.1 メッセージ本文

暗黙的に unsigned char 型から char 型に型変換されています。

6.113.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.113.3 サンプルコード

extern void foo(char a);

void bar(unsigned char a)
{
    char b = a; /* W0132 */
    foo(a); /* W0132 */
}

6.113.4 関連メッセージ

6.113.5 対応バージョン

1.0.0


Next: , Previous: W0132, Up: Messages

6.114 W0133

6.114.1 メッセージ本文

暗黙的に signed char 型から char 型に型変換されています。

6.114.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.114.3 サンプルコード

extern void foo(char a);

void bar(signed char a)
{
    char b = a; /* W0133 */
    foo(a); /* W0133 */
}

6.114.4 関連メッセージ

6.114.5 対応バージョン

1.0.0


Next: , Previous: W0133, Up: Messages

6.115 W0134

6.115.1 メッセージ本文

暗黙的に signed short 型から char 型に型変換されています。

6.115.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.115.3 サンプルコード

extern void foo(char a);

void bar(short a)
{
    char b = a; /* W0134 */
    foo(a); /* W0134 */
}

6.115.4 関連メッセージ

6.115.5 対応バージョン

1.0.0


Next: , Previous: W0134, Up: Messages

6.116 W0135

6.116.1 メッセージ本文

暗黙的に unsigned short 型から char 型に型変換されています。

6.116.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.116.3 サンプルコード

extern void foo(char a);

void bar(unsigned short a)
{
    char b = a; /* W0135 */
    foo(a); /* W0135 */
}

6.116.4 関連メッセージ

6.116.5 対応バージョン

1.0.0


Next: , Previous: W0135, Up: Messages

6.117 W0136

6.117.1 メッセージ本文

暗黙的に signed int 型から char 型に型変換されています。

6.117.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.117.3 サンプルコード

extern void foo(char a);

void bar(int a)
{
    char b = a; /* W0136 */
    foo(a); /* W0136 */
}

6.117.4 関連メッセージ

6.117.5 対応バージョン

1.0.0


Next: , Previous: W0136, Up: Messages

6.118 W0137

6.118.1 メッセージ本文

暗黙的に unsigned int 型から char 型に型変換されています。

6.118.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.118.3 サンプルコード

extern void foo(char a);

void bar(unsigned int a)
{
    char b = a; /* W0137 */
    foo(a); /* W0137 */
}

6.118.4 関連メッセージ

6.118.5 対応バージョン

1.0.0


Next: , Previous: W0137, Up: Messages

6.119 W0138

6.119.1 メッセージ本文

暗黙的に signed long 型から char 型に型変換されています。

6.119.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.119.3 サンプルコード

extern void foo(char a);

void bar(long a)
{
    char b = a; /* W0138 */
    foo(a); /* W0138 */
}

6.119.4 関連メッセージ

6.119.5 対応バージョン

1.0.0


Next: , Previous: W0138, Up: Messages

6.120 W0139

6.120.1 メッセージ本文

暗黙的に unsigned long 型から char 型に型変換されています。

6.120.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.120.3 サンプルコード

extern void foo(char a);

void bar(unsigned long a)
{
    char b = a; /* W0139 */
    foo(a); /* W0139 */
}

6.120.4 関連メッセージ

6.120.5 対応バージョン

1.0.0


Next: , Previous: W0139, Up: Messages

6.121 W0140

6.121.1 メッセージ本文

暗黙的に signed long long 型から char 型に型変換されています。

6.121.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.121.3 サンプルコード

extern void foo(char a);

void bar(long long a)
{
    char b = a; /* W0140 */
    foo(a); /* W0140 */
}

6.121.4 関連メッセージ

6.121.5 対応バージョン

1.0.0


Next: , Previous: W0140, Up: Messages

6.122 W0141

6.122.1 メッセージ本文

暗黙的に unsigned long long 型から char 型に型変換されています。

6.122.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.122.3 サンプルコード

extern void foo(char a);

void bar(unsigned long long a)
{
    char b = a; /* W0141 */
    foo(a); /* W0141 */
}

6.122.4 関連メッセージ

6.122.5 対応バージョン

1.0.0


Next: , Previous: W0141, Up: Messages

6.123 W0142

6.123.1 メッセージ本文

暗黙的に unsigned char 型から signed char 型に型変換されています。

6.123.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。

6.123.3 サンプルコード

extern void foo(signed char a);

void bar(unsigned char a)
{
    signed char b = a; /* W0142 */
    foo(a); /* W0142 */
}

6.123.4 関連メッセージ

6.123.5 対応バージョン

1.0.0


Next: , Previous: W0142, Up: Messages

6.124 W0143

6.124.1 メッセージ本文

暗黙的に unsigned short 型から signed char 型に型変換されています。

6.124.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.124.3 サンプルコード

extern void foo(signed char a);

void bar(unsigned short a)
{
    signed char b = a; /* W0143 */
    foo(a); /* W0143 */
}

6.124.4 関連メッセージ

6.124.5 対応バージョン

1.0.0


Next: , Previous: W0143, Up: Messages

6.125 W0144

6.125.1 メッセージ本文

暗黙的に unsigned short 型から signed short 型に型変換されています。

6.125.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。

6.125.3 サンプルコード

extern void foo(short a);

void bar(unsigned short a)
{
    short b = a; /* W0144 */
    foo(a); /* W0144 */
}

6.125.4 関連メッセージ

6.125.5 対応バージョン

1.0.0


Next: , Previous: W0144, Up: Messages

6.126 W0145

6.126.1 メッセージ本文

暗黙的に unsigned int 型から signed char 型に型変換されています。

6.126.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.126.3 サンプルコード

extern void foo(signed char a);

void bar(unsigned int a)
{
    signed char b = a; /* W0145 */
    foo(a); /* W0145 */
}

6.126.4 関連メッセージ

6.126.5 対応バージョン

1.0.0


Next: , Previous: W0145, Up: Messages

6.127 W0146

6.127.1 メッセージ本文

暗黙的に unsigned int 型から signed short 型に型変換されています。

6.127.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.127.3 サンプルコード

extern void foo(short a);

void bar(unsigned int a)
{
    short b = a; /* W0146 */
    foo(a); /* W0146 */
}

6.127.4 関連メッセージ

6.127.5 対応バージョン

1.0.0


Next: , Previous: W0146, Up: Messages

6.128 W0147

6.128.1 メッセージ本文

暗黙的に unsigned int 型から signed int 型に型変換されています。

6.128.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。

6.128.3 サンプルコード

extern void foo(int a);

void bar(unsigned int a)
{
    int b = a; /* W0147 */
    foo(a); /* W0147 */
}

6.128.4 関連メッセージ

6.128.5 対応バージョン

1.0.0


Next: , Previous: W0147, Up: Messages

6.129 W0148

6.129.1 メッセージ本文

暗黙的に unsigned long 型から signed char 型に型変換されています。

6.129.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.129.3 サンプルコード

extern void foo(signed char a);

void bar(unsigned long a)
{
    signed char b = a; /* W0148 */
    foo(a); /* W0148 */
}

6.129.4 関連メッセージ

6.129.5 対応バージョン

1.0.0


Next: , Previous: W0148, Up: Messages

6.130 W0149

6.130.1 メッセージ本文

暗黙的に unsigned long 型から signed short 型に型変換されています。

6.130.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.130.3 サンプルコード

extern void foo(short a);

void bar(unsigned long a)
{
    short b = a; /* W0149 */
    foo(a); /* W0149 */
}

6.130.4 関連メッセージ

6.130.5 対応バージョン

1.0.0


Next: , Previous: W0149, Up: Messages

6.131 W0150

6.131.1 メッセージ本文

暗黙的に unsigned long 型から signed int 型に型変換されています。

6.131.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.131.3 サンプルコード

extern void foo(int a);

void bar(unsigned long a)
{
    int b = a; /* W0150 */
    foo(a); /* W0150 */
}

6.131.4 関連メッセージ

6.131.5 対応バージョン

1.0.0


Next: , Previous: W0150, Up: Messages

6.132 W0151

6.132.1 メッセージ本文

暗黙的に unsigned long 型から signed long 型に型変換されています。

6.132.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。

6.132.3 サンプルコード

extern void foo(long a);

void bar(unsigned long a)
{
    long b = a; /* W0151 */
    foo(a); /* W0151 */
}

6.132.4 関連メッセージ

6.132.5 対応バージョン

1.0.0


Next: , Previous: W0151, Up: Messages

6.133 W0152

6.133.1 メッセージ本文

暗黙的に unsigned long long 型から signed char 型に型変換されています。

6.133.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.133.3 サンプルコード

extern void foo(signed char a);

void bar(unsigned long long a)
{
    signed char b = a; /* W0152 */
    foo(a); /* W0152 */
}

6.133.4 関連メッセージ

6.133.5 対応バージョン

1.0.0


Next: , Previous: W0152, Up: Messages

6.134 W0153

6.134.1 メッセージ本文

暗黙的に unsigned long long 型から signed short 型に型変換されています。

6.134.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.134.3 サンプルコード

extern void foo(short a);

void bar(unsigned long long a)
{
    short b = a; /* W0153 */
    foo(a); /* W0153 */
}

6.134.4 関連メッセージ

6.134.5 対応バージョン

1.0.0


Next: , Previous: W0153, Up: Messages

6.135 W0154

6.135.1 メッセージ本文

暗黙的に unsigned long long 型から signed int 型に型変換されています。

6.135.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.135.3 サンプルコード

extern void foo(int a);

void bar(unsigned long long a)
{
    int b = a; /* W0154 */
    foo(a); /* W0154 */
}

6.135.4 関連メッセージ

6.135.5 対応バージョン

1.0.0


Next: , Previous: W0154, Up: Messages

6.136 W0155

6.136.1 メッセージ本文

暗黙的に unsigned long long 型から signed long 型に型変換されています。

6.136.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。 また、より小さいデータへの暗黙のキャストにより、情報を損失する可能性があります。

6.136.3 サンプルコード

extern void foo(long a);

void bar(unsigned long long a)
{
    long b = a; /* W0155 */
    foo(a); /* W0155 */
}

6.136.4 関連メッセージ

6.136.5 対応バージョン

1.0.0


Next: , Previous: W0155, Up: Messages

6.137 W0156

6.137.1 メッセージ本文

暗黙的に unsigned long long 型から signed long long 型に型変換されています。

6.137.2 内容

符号なし型から符号つき型への暗黙のキャストにより、 結果が意図せず負の数になる可能性があります。

6.137.3 サンプルコード

extern void foo(long long a);

void bar(unsigned long long a)
{
    long long b = a; /* W0156 */
    foo(a); /* W0156 */
}

6.137.4 関連メッセージ

6.137.5 対応バージョン

1.0.0


Next: , Previous: W0156, Up: Messages

6.138 W0157

6.138.1 メッセージ本文

暗黙的に signed char 型から unsigned char 型に型変換されています。

6.138.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.138.3 サンプルコード

extern void foo(unsigned char a);

void bar(signed char a)
{
    unsigned char b = a; /* W0157 */
    foo(a); /* W0157 */
}

6.138.4 関連メッセージ

6.138.5 対応バージョン

1.0.0


Next: , Previous: W0157, Up: Messages

6.139 W0158

6.139.1 メッセージ本文

暗黙的に signed char 型から unsigned short 型に型変換されています。

6.139.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.139.3 サンプルコード

extern void foo(unsigned short a);

void bar(signed char a)
{
    unsigned short b = a; /* W0158 */
    foo(a); /* W0158 */
}

6.139.4 関連メッセージ

6.139.5 対応バージョン

1.0.0


Next: , Previous: W0158, Up: Messages

6.140 W0159

6.140.1 メッセージ本文

暗黙的に signed char 型から unsigned int 型に型変換されています。

6.140.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.140.3 サンプルコード

extern void foo(unsigned int a);

void bar(signed char a)
{
    unsigned int b = a; /* W0159 */
    foo(a); /* W0159 */
}

6.140.4 関連メッセージ

6.140.5 対応バージョン

1.0.0


Next: , Previous: W0159, Up: Messages

6.141 W0160

6.141.1 メッセージ本文

暗黙的に signed char 型から unsigned long 型に型変換されています。

6.141.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.141.3 サンプルコード

extern void foo(unsigned long a);

void bar(signed char a)
{
    unsigned long b = a; /* W0160 */
    foo(a); /* W0160 */
}

6.141.4 関連メッセージ

6.141.5 対応バージョン

1.0.0


Next: , Previous: W0160, Up: Messages

6.142 W0161

6.142.1 メッセージ本文

暗黙的に signed short 型から unsigned char 型に型変換されています。

6.142.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.142.3 サンプルコード

extern void foo(unsigned char a);

void bar(short a)
{
    unsigned char b = a; /* W0161 */
    foo(a); /* W0161 */
}

6.142.4 関連メッセージ

6.142.5 対応バージョン

1.0.0


Next: , Previous: W0161, Up: Messages

6.143 W0162

6.143.1 メッセージ本文

暗黙的に signed short 型から unsigned short 型に型変換されています。

6.143.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.143.3 サンプルコード

extern void foo(unsigned short a);

void bar(short a)
{
    unsigned short b = a; /* W0162 */
    foo(a); /* W0162 */
}

6.143.4 関連メッセージ

6.143.5 対応バージョン

1.0.0


Next: , Previous: W0162, Up: Messages

6.144 W0163

6.144.1 メッセージ本文

暗黙的に signed short 型から unsigned int 型に型変換されています。

6.144.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.144.3 サンプルコード

extern void foo(unsigned int a);

void bar(short a)
{
    unsigned int b = a; /* W0163 */
    foo(a); /* W0163 */
}

6.144.4 関連メッセージ

6.144.5 対応バージョン

1.0.0


Next: , Previous: W0163, Up: Messages

6.145 W0164

6.145.1 メッセージ本文

暗黙的に signed short 型から unsigned long 型に型変換されています。

6.145.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.145.3 サンプルコード

extern void foo(unsigned long a);

void bar(short a)
{
    unsigned long b = a; /* W0164 */
    foo(a); /* W0164 */
}

6.145.4 関連メッセージ

6.145.5 対応バージョン

1.0.0


Next: , Previous: W0164, Up: Messages

6.146 W0165

6.146.1 メッセージ本文

暗黙的に signed int 型から unsigned char 型に型変換されています。

6.146.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.146.3 サンプルコード

extern void foo(unsigned char a);

void bar(int a)
{
    unsigned char b = a; /* W0165 */
    foo(a); /* W0165 */
}

6.146.4 関連メッセージ

6.146.5 対応バージョン

1.0.0


Next: , Previous: W0165, Up: Messages

6.147 W0166

6.147.1 メッセージ本文

暗黙的に signed int 型から unsigned short 型に型変換されています。

6.147.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.147.3 サンプルコード

extern void foo(unsigned short a);

void bar(int a)
{
    unsigned short b = a; /* W0166 */
    foo(a); /* W0166 */
}

6.147.4 関連メッセージ

6.147.5 対応バージョン

1.0.0


Next: , Previous: W0166, Up: Messages

6.148 W0167

6.148.1 メッセージ本文

暗黙的に signed int 型から unsigned int 型に型変換されています。

6.148.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.148.3 サンプルコード

extern void foo(unsigned int a);

void bar(int a)
{
    unsigned int b = a; /* W0167 */
    foo(a); /* W0167 */
}

6.148.4 関連メッセージ

6.148.5 対応バージョン

1.0.0


Next: , Previous: W0167, Up: Messages

6.149 W0168

6.149.1 メッセージ本文

暗黙的に signed int 型から unsigned long 型に型変換されています。

6.149.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.149.3 サンプルコード

extern void foo(unsigned long a);

void bar(int a)
{
    unsigned long b = a; /* W0168 */
    foo(a); /* W0168 */
}

6.149.4 関連メッセージ

6.149.5 対応バージョン

1.0.0


Next: , Previous: W0168, Up: Messages

6.150 W0169

6.150.1 メッセージ本文

暗黙的に signed long 型から unsigned char 型に型変換されています。

6.150.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.150.3 サンプルコード

extern void foo(unsigned char a);

void bar(long a)
{
    unsigned char b = a; /* W0169 */
    foo(a); /* W0169 */
}

6.150.4 関連メッセージ

6.150.5 対応バージョン

1.0.0


Next: , Previous: W0169, Up: Messages

6.151 W0170

6.151.1 メッセージ本文

暗黙的に signed long 型から unsigned short 型に型変換されています。

6.151.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.151.3 サンプルコード

extern void foo(unsigned short a);

void bar(long a)
{
    unsigned short b = a; /* W0170 */
    foo(a); /* W0170 */
}

6.151.4 関連メッセージ

6.151.5 対応バージョン

1.0.0


Next: , Previous: W0170, Up: Messages

6.152 W0171

6.152.1 メッセージ本文

暗黙的に signed long 型から unsigned int 型に型変換されています。

6.152.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.152.3 サンプルコード

extern void foo(unsigned int a);

void bar(long a)
{
    unsigned int b = a; /* W0171 */
    foo(a); /* W0171 */
}

6.152.4 関連メッセージ

6.152.5 対応バージョン

1.0.0


Next: , Previous: W0171, Up: Messages

6.153 W0172

6.153.1 メッセージ本文

暗黙的に signed long 型から unsigned long 型に型変換されています。

6.153.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.153.3 サンプルコード

extern void foo(unsigned long a);

void bar(long a)
{
    unsigned long b = a; /* W0172 */
    foo(a); /* W0172 */
}

6.153.4 関連メッセージ

6.153.5 対応バージョン

1.0.0


Next: , Previous: W0172, Up: Messages

6.154 W0173

6.154.1 メッセージ本文

暗黙的に signed char 型から unsigned long long 型に型変換されています。

6.154.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.154.3 サンプルコード

extern void foo(unsigned long long a);

void bar(signed char a)
{
    unsigned long long b = a; /* W0173 */
    foo(a); /* W0173 */
}

6.154.4 関連メッセージ

6.154.5 対応バージョン

1.0.0


Next: , Previous: W0173, Up: Messages

6.155 W0174

6.155.1 メッセージ本文

暗黙的に signed short 型から unsigned long long 型に型変換されています。

6.155.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.155.3 サンプルコード

extern void foo(unsigned long long a);

void bar(short a)
{
    unsigned long long b = a; /* W0174 */
    foo(a); /* W0174 */
}

6.155.4 関連メッセージ

6.155.5 対応バージョン

1.0.0


Next: , Previous: W0174, Up: Messages

6.156 W0175

6.156.1 メッセージ本文

暗黙的に signed int 型から unsigned long long 型に型変換されています。

6.156.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.156.3 サンプルコード

extern void foo(unsigned long long a);

void bar(int a)
{
    unsigned long long b = a; /* W0175 */
    foo(a); /* W0175 */
}

6.156.4 関連メッセージ

6.156.5 対応バージョン

1.0.0


Next: , Previous: W0175, Up: Messages

6.157 W0176

6.157.1 メッセージ本文

暗黙的に signed long 型から unsigned long long 型に型変換されています。

6.157.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.157.3 サンプルコード

extern void foo(unsigned long long a);

void bar(long a)
{
    unsigned long long b = a; /* W0176 */
    foo(a); /* W0176 */
}

6.157.4 関連メッセージ

6.157.5 対応バージョン

1.0.0


Next: , Previous: W0176, Up: Messages

6.158 W0177

6.158.1 メッセージ本文

暗黙的に signed long long 型から unsigned char 型に型変換されています。

6.158.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.158.3 サンプルコード

extern void foo(unsigned char a);

void bar(long long a)
{
    unsigned char b = a; /* W0177 */
    foo(a); /* W0177 */
}

6.158.4 関連メッセージ

6.158.5 対応バージョン

1.0.0


Next: , Previous: W0177, Up: Messages

6.159 W0178

6.159.1 メッセージ本文

暗黙的に signed long long 型から unsigned short 型に型変換されています。

6.159.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.159.3 サンプルコード

extern void foo(unsigned short a);

void bar(long long a)
{
    unsigned short b = a; /* W0178 */
    foo(a); /* W0178 */
}

6.159.4 関連メッセージ

6.159.5 対応バージョン

1.0.0


Next: , Previous: W0178, Up: Messages

6.160 W0179

6.160.1 メッセージ本文

暗黙的に signed long long 型から unsigned int 型に型変換されています。

6.160.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.160.3 サンプルコード

extern void foo(unsigned int a);

void bar(long long a)
{
    unsigned int b = a; /* W0179 */
    foo(a); /* W0179 */
}

6.160.4 関連メッセージ

6.160.5 対応バージョン

1.0.0


Next: , Previous: W0179, Up: Messages

6.161 W0180

6.161.1 メッセージ本文

暗黙的に signed long long 型から unsigned long 型に型変換されています。

6.161.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.161.3 サンプルコード

extern void foo(unsigned long a);

void bar(long long a)
{
    unsigned long b = a; /* W0180 */
    foo(a); /* W0180 */
}

6.161.4 関連メッセージ

6.161.5 対応バージョン

1.0.0


Next: , Previous: W0180, Up: Messages

6.162 W0181

6.162.1 メッセージ本文

暗黙的に signed long long 型から unsigned long long 型に型変換されています。

6.162.2 内容

符号つき型から符号なし型への暗黙のキャストにより、 結果が意図せず負の数から大きな正の数になる可能性があります。

6.162.3 サンプルコード

extern void foo(unsigned long long a);

void bar(long long a)
{
    unsigned long long b = a; /* W0181 */
    foo(a); /* W0181 */
}

6.162.4 関連メッセージ

6.162.5 対応バージョン

1.0.0


Next: , Previous: W0181, Up: Messages

6.163 W0182

6.163.1 メッセージ本文

暗黙的に unsigned char 型から float 型に型変換されています。

6.163.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.163.3 サンプルコード

extern void foo(float a);

void bar(unsigned char a)
{
    float b = a; /* W0182 */
    foo(a); /* W0182 */
}

6.163.4 関連メッセージ

6.163.5 対応バージョン

1.0.0


Next: , Previous: W0182, Up: Messages

6.164 W0183

6.164.1 メッセージ本文

暗黙的に unsigned char 型から double 型に型変換されています。

6.164.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.164.3 サンプルコード

extern void foo(double a);

void bar(unsigned char a)
{
    double b = a; /* W0183 */
    foo(a); /* W0183 */
}

6.164.4 関連メッセージ

6.164.5 対応バージョン

1.0.0


Next: , Previous: W0183, Up: Messages

6.165 W0184

6.165.1 メッセージ本文

暗黙的に unsigned char 型から long double 型に型変換されています。

6.165.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.165.3 サンプルコード

extern void foo(long double a);

void bar(unsigned char a)
{
    long double b = a; /* W0184 */
    foo(a); /* W0184 */
}

6.165.4 関連メッセージ

6.165.5 対応バージョン

1.0.0


Next: , Previous: W0184, Up: Messages

6.166 W0185

6.166.1 メッセージ本文

暗黙的に signed char 型から float 型に型変換されています。

6.166.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.166.3 サンプルコード

extern void foo(float a);

void bar(signed char a)
{
    float b = a; /* W0185 */
    foo(a); /* W0185 */
}

6.166.4 関連メッセージ

6.166.5 対応バージョン

1.0.0


Next: , Previous: W0185, Up: Messages

6.167 W0186

6.167.1 メッセージ本文

暗黙的に signed char 型から double 型に型変換されています。

6.167.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.167.3 サンプルコード

extern void foo(double a);

void bar(signed char a)
{
    double b = a; /* W0186 */
    foo(a); /* W0186 */
}

6.167.4 関連メッセージ

6.167.5 対応バージョン

1.0.0


Next: , Previous: W0186, Up: Messages

6.168 W0187

6.168.1 メッセージ本文

暗黙的に signed char 型から long double 型に型変換されています。

6.168.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.168.3 サンプルコード

extern void foo(long double a);

void bar(signed char a)
{
    long double b = a; /* W0187 */
    foo(a); /* W0187 */
}

6.168.4 関連メッセージ

6.168.5 対応バージョン

1.0.0


Next: , Previous: W0187, Up: Messages

6.169 W0188

6.169.1 メッセージ本文

暗黙的に signed short 型から float 型に型変換されています。

6.169.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.169.3 サンプルコード

extern void foo(float a);

void bar(short a)
{
    float b = a; /* W0188 */
    foo(a); /* W0188 */
}

6.169.4 関連メッセージ

6.169.5 対応バージョン

1.0.0


Next: , Previous: W0188, Up: Messages

6.170 W0189

6.170.1 メッセージ本文

暗黙的に signed short 型から double 型に型変換されています。

6.170.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.170.3 サンプルコード

extern void foo(double a);

void bar(short a)
{
    double b = a; /* W0189 */
    foo(a); /* W0189 */
}

6.170.4 関連メッセージ

6.170.5 対応バージョン

1.0.0


Next: , Previous: W0189, Up: Messages

6.171 W0190

6.171.1 メッセージ本文

暗黙的に signed short 型から long double 型に型変換されています。

6.171.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.171.3 サンプルコード

extern void foo(long double a);

void bar(short a)
{
    long double b = a; /* W0190 */
    foo(a); /* W0190 */
}

6.171.4 関連メッセージ

6.171.5 対応バージョン

1.0.0


Next: , Previous: W0190, Up: Messages

6.172 W0191

6.172.1 メッセージ本文

暗黙的に unsigned short 型から float 型に型変換されています。

6.172.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.172.3 サンプルコード

extern void foo(float a);

void bar(unsigned short a)
{
    float b = a; /* W0191 */
    foo(a); /* W0191 */
}

6.172.4 関連メッセージ

6.172.5 対応バージョン

1.0.0


Next: , Previous: W0191, Up: Messages

6.173 W0192

6.173.1 メッセージ本文

暗黙的に unsigned short 型から double 型に型変換されています。

6.173.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.173.3 サンプルコード

extern void foo(double a);

void bar(unsigned short a)
{
    double b = a; /* W0192 */
    foo(a); /* W0192 */
}

6.173.4 関連メッセージ

6.173.5 対応バージョン

1.0.0


Next: , Previous: W0192, Up: Messages

6.174 W0193

6.174.1 メッセージ本文

暗黙的に unsigned short 型から long double 型に型変換されています。

6.174.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.174.3 サンプルコード

extern void foo(long double a);

void bar(unsigned short a)
{
    long double b = a; /* W0193 */
    foo(a); /* W0193 */
}

6.174.4 関連メッセージ

6.174.5 対応バージョン

1.0.0


Next: , Previous: W0193, Up: Messages

6.175 W0194

6.175.1 メッセージ本文

暗黙的に signed int 型から float 型に型変換されています。

6.175.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.175.3 サンプルコード

extern void foo(float a);

void bar(int a)
{
    float b = a; /* W0194 */
    foo(a); /* W0194 */
}

6.175.4 関連メッセージ

6.175.5 対応バージョン

1.0.0


Next: , Previous: W0194, Up: Messages

6.176 W0195

6.176.1 メッセージ本文

暗黙的に signed int 型から double 型に型変換されています。

6.176.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.176.3 サンプルコード

extern void foo(double a);

void bar(int a)
{
    double b = a; /* W0195 */
    foo(a); /* W0195 */
}

6.176.4 関連メッセージ

6.176.5 対応バージョン

1.0.0


Next: , Previous: W0195, Up: Messages

6.177 W0196

6.177.1 メッセージ本文

暗黙的に signed int 型から long double 型に型変換されています。

6.177.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.177.3 サンプルコード

extern void foo(long double a);

void bar(int a)
{
    long double b = a; /* W0196 */
    foo(a); /* W0196 */
}

6.177.4 関連メッセージ

6.177.5 対応バージョン

1.0.0


Next: , Previous: W0196, Up: Messages

6.178 W0197

6.178.1 メッセージ本文

暗黙的に unsigned int 型から float 型に型変換されています。

6.178.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.178.3 サンプルコード

extern void foo(float a);

void bar(unsigned int a)
{
    float b = a; /* W0197 */
    foo(a); /* W0197 */
}

6.178.4 関連メッセージ

6.178.5 対応バージョン

1.0.0


Next: , Previous: W0197, Up: Messages

6.179 W0198

6.179.1 メッセージ本文

暗黙的に unsigned int 型から double 型に型変換されています。

6.179.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.179.3 サンプルコード

extern void foo(double a);

void bar(unsigned int a)
{
    double b = a; /* W0198 */
    foo(a); /* W0198 */
}

6.179.4 関連メッセージ

6.179.5 対応バージョン

1.0.0


Next: , Previous: W0198, Up: Messages

6.180 W0199

6.180.1 メッセージ本文

暗黙的に unsigned int 型から long double 型に型変換されています。

6.180.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.180.3 サンプルコード

extern void foo(long double a);

void bar(unsigned int a)
{
    long double b = a; /* W0199 */
    foo(a); /* W0199 */
}

6.180.4 関連メッセージ

6.180.5 対応バージョン

1.0.0


Next: , Previous: W0199, Up: Messages

6.181 W0200

6.181.1 メッセージ本文

暗黙的に signed long 型から float 型に型変換されています。

6.181.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.181.3 サンプルコード

extern void foo(float a);

void bar(long a)
{
    float b = a; /* W0200 */
    foo(a); /* W0200 */
}

6.181.4 関連メッセージ

6.181.5 対応バージョン

1.0.0


Next: , Previous: W0200, Up: Messages

6.182 W0201

6.182.1 メッセージ本文

暗黙的に signed long 型から double 型に型変換されています。

6.182.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.182.3 サンプルコード

extern void foo(double a);

void bar(long a)
{
    double b = a; /* W0201 */
    foo(a); /* W0201 */
}

6.182.4 関連メッセージ

6.182.5 対応バージョン

1.0.0


Next: , Previous: W0201, Up: Messages

6.183 W0202

6.183.1 メッセージ本文

暗黙的に signed long 型から long double 型に型変換されています。

6.183.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.183.3 サンプルコード

extern void foo(long double a);

void bar(long a)
{
    long double b = a; /* W0202 */
    foo(a); /* W0202 */
}

6.183.4 関連メッセージ

6.183.5 対応バージョン

1.0.0


Next: , Previous: W0202, Up: Messages

6.184 W0203

6.184.1 メッセージ本文

暗黙的に unsigned long 型から float 型に型変換されています。

6.184.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.184.3 サンプルコード

extern void foo(float a);

void bar(unsigned long a)
{
    float b = a; /* W0203 */
    foo(a); /* W0203 */
}

6.184.4 関連メッセージ

6.184.5 対応バージョン

1.0.0


Next: , Previous: W0203, Up: Messages

6.185 W0204

6.185.1 メッセージ本文

暗黙的に unsigned long 型から double 型に型変換されています。

6.185.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.185.3 サンプルコード

extern void foo(double a);

void bar(unsigned long a)
{
    double b = a; /* W0204 */
    foo(a); /* W0204 */
}

6.185.4 関連メッセージ

6.185.5 対応バージョン

1.0.0


Next: , Previous: W0204, Up: Messages

6.186 W0205

6.186.1 メッセージ本文

暗黙的に unsigned long 型から long double 型に型変換されています。

6.186.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.186.3 サンプルコード

extern void foo(long double a);

void bar(unsigned long a)
{
    long double b = a; /* W0205 */
    foo(a); /* W0205 */
}

6.186.4 関連メッセージ

6.186.5 対応バージョン

1.0.0


Next: , Previous: W0205, Up: Messages

6.187 W0206

6.187.1 メッセージ本文

暗黙的に signed long long 型から float 型に型変換されています。

6.187.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.187.3 サンプルコード

extern void foo(float a);

void bar(long long a)
{
    float b = a; /* W0206 */
    foo(a); /* W0206 */
}

6.187.4 関連メッセージ

6.187.5 対応バージョン

1.0.0


Next: , Previous: W0206, Up: Messages

6.188 W0207

6.188.1 メッセージ本文

暗黙的に signed long long 型から double 型に型変換されています。

6.188.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.188.3 サンプルコード

extern void foo(double a);

void bar(long long a)
{
    double b = a; /* W0207 */
    foo(a); /* W0207 */
}

6.188.4 関連メッセージ

6.188.5 対応バージョン

1.0.0


Next: , Previous: W0207, Up: Messages

6.189 W0208

6.189.1 メッセージ本文

暗黙的に signed long long 型から long double 型に型変換されています。

6.189.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.189.3 サンプルコード

extern void foo(long double a);

void bar(long long a)
{
    long double b = a; /* W0208 */
    foo(a); /* W0208 */
}

6.189.4 関連メッセージ

6.189.5 対応バージョン

1.0.0


Next: , Previous: W0208, Up: Messages

6.190 W0209

6.190.1 メッセージ本文

暗黙的に unsigned long long 型から float 型に型変換されています。

6.190.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.190.3 サンプルコード

extern void foo(float a);

void bar(unsigned long long a)
{
    float b = a; /* W0209 */
    foo(a); /* W0209 */
}

6.190.4 関連メッセージ

6.190.5 対応バージョン

1.0.0


Next: , Previous: W0209, Up: Messages

6.191 W0210

6.191.1 メッセージ本文

暗黙的に unsigned long long 型から double 型に型変換されています。

6.191.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.191.3 サンプルコード

extern void foo(double a);

void bar(unsigned long long a)
{
    double b = a; /* W0210 */
    foo(a); /* W0210 */
}

6.191.4 関連メッセージ

6.191.5 対応バージョン

1.0.0


Next: , Previous: W0210, Up: Messages

6.192 W0211

6.192.1 メッセージ本文

暗黙的に unsigned long long 型から long double 型に型変換されています。

6.192.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.192.3 サンプルコード

extern void foo(long double a);

void bar(unsigned long long a)
{
    long double b = a; /* W0211 */
    foo(a); /* W0211 */
}

6.192.4 関連メッセージ

6.192.5 対応バージョン

1.0.0


Next: , Previous: W0211, Up: Messages

6.193 W0212

6.193.1 メッセージ本文

暗黙的に float 型から char 型に型変換されています。

6.193.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.193.3 サンプルコード

extern void foo(char a);

void bar(float a)
{
    char b = a; /* W0212 */
    foo(a); /* W0212 */
}

6.193.4 関連メッセージ

6.193.5 対応バージョン

1.0.0


Next: , Previous: W0212, Up: Messages

6.194 W0213

6.194.1 メッセージ本文

暗黙的に float 型から signed char 型に型変換されています。

6.194.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.194.3 サンプルコード

extern void foo(signed char a);

void bar(float a)
{
    signed char b = a; /* W0213 */
    foo(a); /* W0213 */
}

6.194.4 関連メッセージ

6.194.5 対応バージョン

1.0.0


Next: , Previous: W0213, Up: Messages

6.195 W0214

6.195.1 メッセージ本文

暗黙的に float 型から unsigned char 型に型変換されています。

6.195.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.195.3 サンプルコード

extern void foo(unsigned char a);

void bar(float a)
{
    unsigned char b = a; /* W0214 */
    foo(a); /* W0214 */
}

6.195.4 関連メッセージ

6.195.5 対応バージョン

1.0.0


Next: , Previous: W0214, Up: Messages

6.196 W0215

6.196.1 メッセージ本文

暗黙的に float 型から signed short 型に型変換されています。

6.196.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.196.3 サンプルコード

extern void foo(short a);

void bar(float a)
{
    short b = a; /* W0215 */
    foo(a); /* W0215 */
}

6.196.4 関連メッセージ

6.196.5 対応バージョン

1.0.0


Next: , Previous: W0215, Up: Messages

6.197 W0216

6.197.1 メッセージ本文

暗黙的に float 型から unsigned short 型に型変換されています。

6.197.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.197.3 サンプルコード

extern void foo(unsigned short a);

void bar(float a)
{
    unsigned short b = a; /* W0216 */
    foo(a); /* W0216 */
}

6.197.4 関連メッセージ

6.197.5 対応バージョン

1.0.0


Next: , Previous: W0216, Up: Messages

6.198 W0217

6.198.1 メッセージ本文

暗黙的に float 型から signed int 型に型変換されています。

6.198.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.198.3 サンプルコード

extern void foo(int a);

void bar(float a)
{
    int b = a; /* W0217 */
    foo(a); /* W0217 */
}

6.198.4 関連メッセージ

6.198.5 対応バージョン

1.0.0


Next: , Previous: W0217, Up: Messages

6.199 W0218

6.199.1 メッセージ本文

暗黙的に float 型から unsigned int 型に型変換されています。

6.199.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.199.3 サンプルコード

extern void foo(unsigned int a);

void bar(float a)
{
    unsigned int b = a; /* W0218 */
    foo(a); /* W0218 */
}

6.199.4 関連メッセージ

6.199.5 対応バージョン

1.0.0


Next: , Previous: W0218, Up: Messages

6.200 W0219

6.200.1 メッセージ本文

暗黙的に float 型から signed long 型に型変換されています。

6.200.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.200.3 サンプルコード

extern void foo(long a);

void bar(float a)
{
    long b = a; /* W0219 */
    foo(a); /* W0219 */
}

6.200.4 関連メッセージ

6.200.5 対応バージョン

1.0.0


Next: , Previous: W0219, Up: Messages

6.201 W0220

6.201.1 メッセージ本文

暗黙的に float 型から unsigned long 型に型変換されています。

6.201.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.201.3 サンプルコード

extern void foo(unsigned long a);

void bar(float a)
{
    unsigned long b = a; /* W0220 */
    foo(a); /* W0220 */
}

6.201.4 関連メッセージ

6.201.5 対応バージョン

1.0.0


Next: , Previous: W0220, Up: Messages

6.202 W0221

6.202.1 メッセージ本文

暗黙的に double 型から char 型に型変換されています。

6.202.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.202.3 サンプルコード

extern void foo(char a);

void bar(double a)
{
    char b = a; /* W0221 */
    foo(a); /* W0221 */
}

6.202.4 関連メッセージ

6.202.5 対応バージョン

1.0.0


Next: , Previous: W0221, Up: Messages

6.203 W0222

6.203.1 メッセージ本文

暗黙的に double 型から signed char 型に型変換されています。

6.203.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.203.3 サンプルコード

extern void foo(signed char a);

void bar(double a)
{
    signed char b = a; /* W0222 */
    foo(a); /* W0222 */
}

6.203.4 関連メッセージ

6.203.5 対応バージョン

1.0.0


Next: , Previous: W0222, Up: Messages

6.204 W0223

6.204.1 メッセージ本文

暗黙的に double 型から unsigned char 型に型変換されています。

6.204.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.204.3 サンプルコード

extern void foo(unsigned char a);

void bar(double a)
{
    unsigned char b = a; /* W0223 */
    foo(a); /* W0223 */
}

6.204.4 関連メッセージ

6.204.5 対応バージョン

1.0.0


Next: , Previous: W0223, Up: Messages

6.205 W0224

6.205.1 メッセージ本文

暗黙的に double 型から signed short 型に型変換されています。

6.205.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.205.3 サンプルコード

extern void foo(short a);

void bar(double a)
{
    short b = a; /* W0224 */
    foo(a); /* W0224 */
}

6.205.4 関連メッセージ

6.205.5 対応バージョン

1.0.0


Next: , Previous: W0224, Up: Messages

6.206 W0225

6.206.1 メッセージ本文

暗黙的に double 型から unsigned short 型に型変換されています。

6.206.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.206.3 サンプルコード

extern void foo(unsigned short a);

void bar(double a)
{
    unsigned short b = a; /* W0225 */
    foo(a); /* W0225 */
}

6.206.4 関連メッセージ

6.206.5 対応バージョン

1.0.0


Next: , Previous: W0225, Up: Messages

6.207 W0226

6.207.1 メッセージ本文

暗黙的に double 型から signed int 型に型変換されています。

6.207.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.207.3 サンプルコード

extern void foo(int a);

void bar(double a)
{
    int b = a; /* W0226 */
    foo(a); /* W0226 */
}

6.207.4 関連メッセージ

6.207.5 対応バージョン

1.0.0


Next: , Previous: W0226, Up: Messages

6.208 W0227

6.208.1 メッセージ本文

暗黙的に double 型から unsigned int 型に型変換されています。

6.208.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.208.3 サンプルコード

extern void foo(unsigned int a);

void bar(double a)
{
    unsigned int b = a; /* W0227 */
    foo(a); /* W0227 */
}

6.208.4 関連メッセージ

6.208.5 対応バージョン

1.0.0


Next: , Previous: W0227, Up: Messages

6.209 W0228

6.209.1 メッセージ本文

暗黙的に double 型から signed long 型に型変換されています。

6.209.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.209.3 サンプルコード

extern void foo(long a);

void bar(double a)
{
    long b = a; /* W0228 */
    foo(a); /* W0228 */
}

6.209.4 関連メッセージ

6.209.5 対応バージョン

1.0.0


Next: , Previous: W0228, Up: Messages

6.210 W0229

6.210.1 メッセージ本文

暗黙的に double 型から unsigned long 型に型変換されています。

6.210.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.210.3 サンプルコード

extern void foo(unsigned long a);

void bar(double a)
{
    unsigned long b = a; /* W0229 */
    foo(a); /* W0229 */
}

6.210.4 関連メッセージ

6.210.5 対応バージョン

1.0.0


Next: , Previous: W0229, Up: Messages

6.211 W0230

6.211.1 メッセージ本文

暗黙的に long double 型から char 型に型変換されています。

6.211.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.211.3 サンプルコード

extern void foo(char a);

void bar(long double a)
{
    char b = a; /* W0230 */
    foo(a); /* W0230 */
}

6.211.4 関連メッセージ

6.211.5 対応バージョン

1.0.0


Next: , Previous: W0230, Up: Messages

6.212 W0231

6.212.1 メッセージ本文

暗黙的に long double 型から signed char 型に型変換されています。

6.212.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.212.3 サンプルコード

extern void foo(signed char a);

void bar(long double a)
{
    signed char b = a; /* W0231 */
    foo(a); /* W0231 */
}

6.212.4 関連メッセージ

6.212.5 対応バージョン

1.0.0


Next: , Previous: W0231, Up: Messages

6.213 W0232

6.213.1 メッセージ本文

暗黙的に long double 型から unsigned char 型に型変換されています。

6.213.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.213.3 サンプルコード

extern void foo(unsigned char a);

void bar(long double a)
{
    unsigned char b = a; /* W0232 */
    foo(a); /* W0232 */
}

6.213.4 関連メッセージ

6.213.5 対応バージョン

1.0.0


Next: , Previous: W0232, Up: Messages

6.214 W0233

6.214.1 メッセージ本文

暗黙的に long double 型から signed short 型に型変換されています。

6.214.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.214.3 サンプルコード

extern void foo(short a);

void bar(long double a)
{
    short b = a; /* W0233 */
    foo(a); /* W0233 */
}

6.214.4 関連メッセージ

6.214.5 対応バージョン

1.0.0


Next: , Previous: W0233, Up: Messages

6.215 W0234

6.215.1 メッセージ本文

暗黙的に long double 型から unsigned short 型に型変換されています。

6.215.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.215.3 サンプルコード

extern void foo(unsigned short a);

void bar(long double a)
{
    unsigned short b = a; /* W0234 */
    foo(a); /* W0234 */
}

6.215.4 関連メッセージ

6.215.5 対応バージョン

1.0.0


Next: , Previous: W0234, Up: Messages

6.216 W0235

6.216.1 メッセージ本文

暗黙的に long double 型から signed int 型に型変換されています。

6.216.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.216.3 サンプルコード

extern void foo(int a);

void bar(long double a)
{
    int b = a; /* W0235 */
    foo(a); /* W0235 */
}

6.216.4 関連メッセージ

6.216.5 対応バージョン

1.0.0


Next: , Previous: W0235, Up: Messages

6.217 W0236

6.217.1 メッセージ本文

暗黙的に long double 型から unsigned int 型に型変換されています。

6.217.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.217.3 サンプルコード

extern void foo(unsigned int a);

void bar(long double a)
{
    unsigned int b = a; /* W0236 */
    foo(a); /* W0236 */
}

6.217.4 関連メッセージ

6.217.5 対応バージョン

1.0.0


Next: , Previous: W0236, Up: Messages

6.218 W0237

6.218.1 メッセージ本文

暗黙的に long double 型から signed long 型に型変換されています。

6.218.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.218.3 サンプルコード

extern void foo(long a);

void bar(long double a)
{
    long b = a; /* W0237 */
    foo(a); /* W0237 */
}

6.218.4 関連メッセージ

6.218.5 対応バージョン

1.0.0


Next: , Previous: W0237, Up: Messages

6.219 W0238

6.219.1 メッセージ本文

暗黙的に long double 型から unsigned long 型に型変換されています。

6.219.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.219.3 サンプルコード

extern void foo(unsigned long a);

void bar(long double a)
{
    unsigned long b = a; /* W0238 */
    foo(a); /* W0238 */
}

6.219.4 関連メッセージ

6.219.5 対応バージョン

1.0.0


Next: , Previous: W0238, Up: Messages

6.220 W0239

6.220.1 メッセージ本文

暗黙的に float 型から signed long long 型に型変換されています。

6.220.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.220.3 サンプルコード

extern void foo(long long a);

void bar(float a)
{
    long long b = a; /* W0239 */
    foo(a); /* W0239 */
}

6.220.4 関連メッセージ

6.220.5 対応バージョン

1.0.0


Next: , Previous: W0239, Up: Messages

6.221 W0240

6.221.1 メッセージ本文

暗黙的に float 型から unsigned long long 型に型変換されています。

6.221.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.221.3 サンプルコード

extern void foo(unsigned long long a);

void bar(float a)
{
    unsigned long long b = a; /* W0240 */
    foo(a); /* W0240 */
}

6.221.4 関連メッセージ

6.221.5 対応バージョン

1.0.0


Next: , Previous: W0240, Up: Messages

6.222 W0241

6.222.1 メッセージ本文

暗黙的に double 型から signed long long 型に型変換されています。

6.222.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.222.3 サンプルコード

extern void foo(long long a);

void bar(double a)
{
    long long b = a; /* W0241 */
    foo(a); /* W0241 */
}

6.222.4 関連メッセージ

6.222.5 対応バージョン

1.0.0


Next: , Previous: W0241, Up: Messages

6.223 W0242

6.223.1 メッセージ本文

暗黙的に double 型から unsigned long long 型に型変換されています。

6.223.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.223.3 サンプルコード

extern void foo(unsigned long long a);

void bar(double a)
{
    unsigned long long b = a; /* W0242 */
    foo(a); /* W0242 */
}

6.223.4 関連メッセージ

6.223.5 対応バージョン

1.0.0


Next: , Previous: W0242, Up: Messages

6.224 W0243

6.224.1 メッセージ本文

暗黙的に long double 型から signed long long 型に型変換されています。

6.224.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.224.3 サンプルコード

extern void foo(long long a);

void bar(long double a)
{
    long long b = a; /* W0243 */
    foo(a); /* W0243 */
}

6.224.4 関連メッセージ

6.224.5 対応バージョン

1.0.0


Next: , Previous: W0243, Up: Messages

6.225 W0244

6.225.1 メッセージ本文

暗黙的に long double 型から unsigned long long 型に型変換されています。

6.225.2 内容

浮動小数点型から整数型への暗黙のキャストにより、精度落ちになる可能性があります。

6.225.3 サンプルコード

extern void foo(unsigned long long a);

void bar(long double a)
{
    unsigned long long b = a; /* W0244 */
    foo(a); /* W0244 */
}

6.225.4 関連メッセージ

6.225.5 対応バージョン

1.0.0


Next: , Previous: W0244, Up: Messages

6.226 W0245

6.226.1 メッセージ本文

暗黙的に unsigned char 型から signed short 型に型変換されています。

6.226.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.226.3 サンプルコード

extern void foo(short a);

void bar(unsigned char a)
{
    short b = a; /* W0245 */
    foo(a); /* W0245 */
}

6.226.4 関連メッセージ

6.226.5 対応バージョン

1.0.0


Next: , Previous: W0245, Up: Messages

6.227 W0246

6.227.1 メッセージ本文

暗黙的に unsigned char 型から signed int 型に型変換されています。

6.227.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.227.3 サンプルコード

extern void foo(int a);

void bar(unsigned char a)
{
    int b = a; /* W0246 */
    foo(a); /* W0246 */
}

6.227.4 関連メッセージ

6.227.5 対応バージョン

1.0.0


Next: , Previous: W0246, Up: Messages

6.228 W0247

6.228.1 メッセージ本文

暗黙的に unsigned char 型から signed long 型に型変換されています。

6.228.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.228.3 サンプルコード

extern void foo(long a);

void bar(unsigned char a)
{
    long b = a; /* W0247 */
    foo(a); /* W0247 */
}

6.228.4 関連メッセージ

6.228.5 対応バージョン

1.0.0


Next: , Previous: W0247, Up: Messages

6.229 W0248

6.229.1 メッセージ本文

暗黙的に unsigned short 型から signed int 型に型変換されています。

6.229.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.229.3 サンプルコード

extern void foo(int a);

void bar(unsigned short a)
{
    int b = a; /* W0248 */
    foo(a); /* W0248 */
}

6.229.4 関連メッセージ

6.229.5 対応バージョン

1.0.0


Next: , Previous: W0248, Up: Messages

6.230 W0249

6.230.1 メッセージ本文

暗黙的に unsigned short 型から signed long 型に型変換されています。

6.230.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.230.3 サンプルコード

extern void foo(long a);

void bar(unsigned short a)
{
    long b = a; /* W0249 */
    foo(a); /* W0249 */
}

6.230.4 関連メッセージ

6.230.5 対応バージョン

1.0.0


Next: , Previous: W0249, Up: Messages

6.231 W0250

6.231.1 メッセージ本文

暗黙的に unsigned int 型から signed long 型に型変換されています。

6.231.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.231.3 サンプルコード

extern void foo(long a);

void bar(unsigned int a)
{
    long b = a; /* W0250 */
    foo(a); /* W0250 */
}

6.231.4 関連メッセージ

6.231.5 対応バージョン

1.0.0


Next: , Previous: W0250, Up: Messages

6.232 W0251

6.232.1 メッセージ本文

暗黙的に unsigned char 型から signed long long 型に型変換されています。

6.232.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.232.3 サンプルコード

extern void foo(long long a);

void bar(unsigned char a)
{
    long long b = a; /* W0251 */
    foo(a); /* W0251 */
}

6.232.4 関連メッセージ

6.232.5 対応バージョン

1.0.0


Next: , Previous: W0251, Up: Messages

6.233 W0252

6.233.1 メッセージ本文

暗黙的に unsigned short 型から signed long long 型に型変換されています。

6.233.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.233.3 サンプルコード

extern void foo(long long a);

void bar(unsigned short a)
{
    long long b = a; /* W0252 */
    foo(a); /* W0252 */
}

6.233.4 関連メッセージ

6.233.5 対応バージョン

1.0.0


Next: , Previous: W0252, Up: Messages

6.234 W0253

6.234.1 メッセージ本文

暗黙的に unsigned int 型から signed long long 型に型変換されています。

6.234.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.234.3 サンプルコード

extern void foo(long long a);

void bar(unsigned int a)
{
    long long b = a; /* W0253 */
    foo(a); /* W0253 */
}

6.234.4 関連メッセージ

6.234.5 対応バージョン

1.0.0


Next: , Previous: W0253, Up: Messages

6.235 W0254

6.235.1 メッセージ本文

暗黙的に unsigned long 型から signed long long 型に型変換されています。

6.235.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.235.3 サンプルコード

extern void foo(long long a);

void bar(unsigned long a)
{
    long long b = a; /* W0254 */
    foo(a); /* W0254 */
}

6.235.4 関連メッセージ

6.235.5 対応バージョン

1.0.0


Next: , Previous: W0254, Up: Messages

6.236 W0255

6.236.1 メッセージ本文

char 型の値が関数 `signed char %s()' から返されています。

6.236.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.236.3 サンプルコード

signed char func(void)
{
    char a = 0;
    return a; /* W0255 */
}

6.236.4 関連メッセージ

6.236.5 対応バージョン

1.0.0


Next: , Previous: W0255, Up: Messages

6.237 W0256

6.237.1 メッセージ本文

char 型の値が関数 `unsigned char %s()' から返されています。

6.237.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.237.3 サンプルコード

unsigned char func(void)
{
    char a = 0;
    return a; /* W0256 */
}

6.237.4 関連メッセージ

6.237.5 対応バージョン

1.0.0


Next: , Previous: W0256, Up: Messages

6.238 W0257

6.238.1 メッセージ本文

char 型の値が関数 `signed short %s()' から返されています。

6.238.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.238.3 サンプルコード

short func(void)
{
    char a = 0;
    return a; /* W0257 */
}

6.238.4 関連メッセージ

6.238.5 対応バージョン

1.0.0


Next: , Previous: W0257, Up: Messages

6.239 W0258

6.239.1 メッセージ本文

char 型の値が関数 `unsigned short %s()' から返されています。

6.239.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.239.3 サンプルコード

unsigned short func(void)
{
    char a = 0;
    return a; /* W0258 */
}

6.239.4 関連メッセージ

6.239.5 対応バージョン

1.0.0


Next: , Previous: W0258, Up: Messages

6.240 W0259

6.240.1 メッセージ本文

char 型の値が関数 `signed int %s()' から返されています。

6.240.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.240.3 サンプルコード

int func(void)
{
    char a = 0;
    return a; /* W0259 */
}

6.240.4 関連メッセージ

6.240.5 対応バージョン

1.0.0


Next: , Previous: W0259, Up: Messages

6.241 W0260

6.241.1 メッセージ本文

char 型の値が関数 `unsigned int %s()' から返されています。

6.241.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.241.3 サンプルコード

unsigned int func(void)
{
    char a = 0;
    return a; /* W0260 */
}

6.241.4 関連メッセージ

6.241.5 対応バージョン

1.0.0


Next: , Previous: W0260, Up: Messages

6.242 W0261

6.242.1 メッセージ本文

char 型の値が関数 `signed long %s()' から返されています。

6.242.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.242.3 サンプルコード

long func(void)
{
    char a = 0;
    return a; /* W0261 */
}

6.242.4 関連メッセージ

6.242.5 対応バージョン

1.0.0


Next: , Previous: W0261, Up: Messages

6.243 W0262

6.243.1 メッセージ本文

char 型の値が関数 `unsigned long %s()' から返されています。

6.243.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.243.3 サンプルコード

unsigned long func(void)
{
    char a = 0;
    return a; /* W0262 */
}

6.243.4 関連メッセージ

6.243.5 対応バージョン

1.0.0


Next: , Previous: W0262, Up: Messages

6.244 W0263

6.244.1 メッセージ本文

char 型の値が関数 `float %s()' から返されています。

6.244.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.244.3 サンプルコード

float func(void)
{
    char a = 0;
    return a; /* W0263 */
}

6.244.4 関連メッセージ

6.244.5 対応バージョン

1.0.0


Next: , Previous: W0263, Up: Messages

6.245 W0264

6.245.1 メッセージ本文

char 型の値が関数 `double %s()' から返されています。

6.245.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.245.3 サンプルコード

double func(void)
{
    char a = 0;
    return a; /* W0264 */
}

6.245.4 関連メッセージ

6.245.5 対応バージョン

1.0.0


Next: , Previous: W0264, Up: Messages

6.246 W0265

6.246.1 メッセージ本文

char 型の値が関数 `long double %s()' から返されています。

6.246.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.246.3 サンプルコード

long double func(void)
{
    char a = 0;
    return a; /* W0265 */
}

6.246.4 関連メッセージ

6.246.5 対応バージョン

1.0.0


Next: , Previous: W0265, Up: Messages

6.247 W0266

6.247.1 メッセージ本文

char 型の値が関数 `signed long long %s()' から返されています。

6.247.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.247.3 サンプルコード

long long func(void)
{
    char a = 0;
    return a; /* W0266 */
}

6.247.4 関連メッセージ

6.247.5 対応バージョン

1.0.0


Next: , Previous: W0266, Up: Messages

6.248 W0267

6.248.1 メッセージ本文

char 型の値が関数 `unsigned long long %s()' から返されています。

6.248.2 内容

単なる char 型からの暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.248.3 サンプルコード

unsigned long long func(void)
{
    char a = 0;
    return a; /* W0267 */
}

6.248.4 関連メッセージ

6.248.5 対応バージョン

1.0.0


Next: , Previous: W0267, Up: Messages

6.249 W0268

6.249.1 メッセージ本文

unsigned char 型の値が関数 `char %s()' から返されています。

6.249.2 内容

単なる char 型への暗黙のキャストは処理系定義です。

6.249.3 サンプルコード

char func(void)
{
    unsigned char a = 0;
    return a; /* W0268 */
}

6.249.4 関連メッセージ

6.249.5 対応バージョン

1.0.0


Next: , Previous: W0268, Up: Messages

6.250 W0269

6.250.1 メッセージ本文

signed char 型の値が関数 `char %s()' から返されています。

6.250.2 内容

単なる char 型への暗黙のキャストは処理系定義です。

6.250.3 サンプルコード

char func(void)
{
    signed char a = 0;
    return a; /* W0269 */
}

6.250.4 関連メッセージ

6.250.5 対応バージョン

1.0.0


Next: , Previous: W0269, Up: Messages

6.251 W0270

6.251.1 メッセージ本文

signed short 型の値が関数 `char %s()' から返されています。

6.251.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.251.3 サンプルコード

char func(void)
{
    short a = 0;
    return a; /* W0270 */
}

6.251.4 関連メッセージ

6.251.5 対応バージョン

1.0.0


Next: , Previous: W0270, Up: Messages

6.252 W0271

6.252.1 メッセージ本文

unsigned short 型の値が関数 `char %s()' から返されています。

6.252.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.252.3 サンプルコード

char func(void)
{
    unsigned short a = 0;
    return a; /* W0271 */
}

6.252.4 関連メッセージ

6.252.5 対応バージョン

1.0.0


Next: , Previous: W0271, Up: Messages

6.253 W0272

6.253.1 メッセージ本文

signed int 型の値が関数 `char %s()' から返されています。

6.253.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.253.3 サンプルコード

char func(void)
{
    int a = 0;
    return a; /* W0272 */
}

6.253.4 関連メッセージ

6.253.5 対応バージョン

1.0.0


Next: , Previous: W0272, Up: Messages

6.254 W0273

6.254.1 メッセージ本文

unsigned int 型の値が関数 `char %s()' から返されています。

6.254.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.254.3 サンプルコード

char func(void)
{
    unsigned int a = 0;
    return a; /* W0273 */
}

6.254.4 関連メッセージ

6.254.5 対応バージョン

1.0.0


Next: , Previous: W0273, Up: Messages

6.255 W0274

6.255.1 メッセージ本文

signed long 型の値が関数 `char %s()' から返されています。

6.255.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.255.3 サンプルコード

char func(void)
{
    long a = 0;
    return a; /* W0274 */
}

6.255.4 関連メッセージ

6.255.5 対応バージョン

1.0.0


Next: , Previous: W0274, Up: Messages

6.256 W0275

6.256.1 メッセージ本文

unsigned long 型の値が関数 `char %s()' から返されています。

6.256.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.256.3 サンプルコード

char func(void)
{
    unsigned long a = 0;
    return a; /* W0275 */
}

6.256.4 関連メッセージ

6.256.5 対応バージョン

1.0.0


Next: , Previous: W0275, Up: Messages

6.257 W0276

6.257.1 メッセージ本文

signed long long 型の値が関数 `char %s()' から返されています。

6.257.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.257.3 サンプルコード

char func(void)
{
    long long a = 0;
    return a; /* W0276 */
}

6.257.4 関連メッセージ

6.257.5 対応バージョン

1.0.0


Next: , Previous: W0276, Up: Messages

6.258 W0277

6.258.1 メッセージ本文

unsigned long long 型の値が関数 `char %s()' から返されています。

6.258.2 内容

単なる char 型への暗黙のキャストは処理系定義です。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.258.3 サンプルコード

char func(void)
{
    unsigned long long a = 0;
    return a; /* W0277 */
}

6.258.4 関連メッセージ

6.258.5 対応バージョン

1.0.0


Next: , Previous: W0277, Up: Messages

6.259 W0278

6.259.1 メッセージ本文

unsigned char 型の値が関数 `signed char %s()' から返されています。

6.259.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.259.3 サンプルコード

signed char func(void)
{
    unsigned char a = 0;
    return a; /* W0278 */
}

6.259.4 関連メッセージ

6.259.5 対応バージョン

1.0.0


Next: , Previous: W0278, Up: Messages

6.260 W0279

6.260.1 メッセージ本文

unsigned short 型の値が関数 `signed char %s()' から返されています。

6.260.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.260.3 サンプルコード

signed char func(void)
{
    unsigned short a = 0;
    return a; /* W0279 */
}

6.260.4 関連メッセージ

6.260.5 対応バージョン

1.0.0


Next: , Previous: W0279, Up: Messages

6.261 W0280

6.261.1 メッセージ本文

unsigned short 型の値が関数 `signed short %s()' から返されています。

6.261.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.261.3 サンプルコード

short func(void)
{
    unsigned short a = 0;
    return a; /* W0280 */
}

6.261.4 関連メッセージ

6.261.5 対応バージョン

1.0.0


Next: , Previous: W0280, Up: Messages

6.262 W0281

6.262.1 メッセージ本文

unsigned int 型の値が関数 `signed char %s()' から返されています。

6.262.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.262.3 サンプルコード

signed char func(void)
{
    unsigned int a = 0;
    return a; /* W0281 */
}

6.262.4 関連メッセージ

6.262.5 対応バージョン

1.0.0


Next: , Previous: W0281, Up: Messages

6.263 W0282

6.263.1 メッセージ本文

unsigned int 型の値が関数 `signed short %s()' から返されています。

6.263.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.263.3 サンプルコード

short func(void)
{
    unsigned int a = 0;
    return a; /* W0282 */
}

6.263.4 関連メッセージ

6.263.5 対応バージョン

1.0.0


Next: , Previous: W0282, Up: Messages

6.264 W0283

6.264.1 メッセージ本文

unsigned int 型の値が関数 `signed int %s()' から返されています。

6.264.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.264.3 サンプルコード

int func(void)
{
    unsigned int a = 0;
    return a; /* W0283 */
}

6.264.4 関連メッセージ

6.264.5 対応バージョン

1.0.0


Next: , Previous: W0283, Up: Messages

6.265 W0284

6.265.1 メッセージ本文

unsigned long 型の値が関数 `signed char %s()' から返されています。

6.265.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.265.3 サンプルコード

signed char func(void)
{
    unsigned long a = 0;
    return a; /* W0284 */
}

6.265.4 関連メッセージ

6.265.5 対応バージョン

1.0.0


Next: , Previous: W0284, Up: Messages

6.266 W0285

6.266.1 メッセージ本文

unsigned long 型の値が関数 `signed short %s()' から返されています。

6.266.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.266.3 サンプルコード

short func(void)
{
    unsigned long a = 0;
    return a; /* W0285 */
}

6.266.4 関連メッセージ

6.266.5 対応バージョン

1.0.0


Next: , Previous: W0285, Up: Messages

6.267 W0286

6.267.1 メッセージ本文

unsigned long 型の値が関数 `signed int %s()' から返されています。

6.267.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.267.3 サンプルコード

int func(void)
{
    unsigned long a = 0;
    return a; /* W0286 */
}

6.267.4 関連メッセージ

6.267.5 対応バージョン

1.0.0


Next: , Previous: W0286, Up: Messages

6.268 W0287

6.268.1 メッセージ本文

unsigned long 型の値が関数 `signed long %s()' から返されています。

6.268.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。

6.268.3 サンプルコード

long func(void)
{
    unsigned long a = 0;
    return a; /* W0287 */
}

6.268.4 関連メッセージ

6.268.5 対応バージョン

1.0.0


Next: , Previous: W0287, Up: Messages

6.269 W0288

6.269.1 メッセージ本文

unsigned long long 型の値が関数 `signed char %s()' から返されています。

6.269.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.269.3 サンプルコード

signed char func(void)
{
    unsigned long long a = 0;
    return a; /* W0288 */
}

6.269.4 関連メッセージ

6.269.5 対応バージョン

1.0.0


Next: , Previous: W0288, Up: Messages

6.270 W0289

6.270.1 メッセージ本文

unsigned long long 型の値が関数 `signed short %s()' から返されています。

6.270.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.270.3 サンプルコード

short func(void)
{
    unsigned long long a = 0;
    return a; /* W0289 */
}

6.270.4 関連メッセージ

6.270.5 対応バージョン

1.0.0


Next: , Previous: W0289, Up: Messages

6.271 W0290

6.271.1 メッセージ本文

unsigned long long 型の値が関数 `signed int %s()' から返されています。

6.271.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.271.3 サンプルコード

int func(void)
{
    unsigned long long a = 0;
    return a; /* W0290 */
}

6.271.4 関連メッセージ

6.271.5 対応バージョン

1.0.0


Next: , Previous: W0290, Up: Messages

6.272 W0291

6.272.1 メッセージ本文

unsigned long long 型の値が関数 `signed long %s()' から返されています。

6.272.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.272.3 サンプルコード

long func(void)
{
    unsigned long long a = 0;
    return a; /* W0291 */
}

6.272.4 関連メッセージ

6.272.5 対応バージョン

1.0.0


Next: , Previous: W0291, Up: Messages

6.273 W0292

6.273.1 メッセージ本文

unsigned long long 型の値が関数 `signed long long %s()' から返されています。

6.273.2 内容

符号なし型から符号つき型への暗黙のキャストにより、結果が意図せず負の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.273.3 サンプルコード

long long func(void)
{
    unsigned long long a = 0;
    return a; /* W0292 */
}

6.273.4 関連メッセージ

6.273.5 対応バージョン

1.0.0


Next: , Previous: W0292, Up: Messages

6.274 W0293

6.274.1 メッセージ本文

signed char 型の値が関数 `unsigned char %s()' から返されています。

6.274.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.274.3 サンプルコード

unsigned char func(void)
{
    signed char a = 0;
    return a; /* W0293 */
}

6.274.4 関連メッセージ

6.274.5 対応バージョン

1.0.0


Next: , Previous: W0293, Up: Messages

6.275 W0294

6.275.1 メッセージ本文

signed char 型の値が関数 `unsigned short %s()' から返されています。

6.275.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.275.3 サンプルコード

unsigned short func(void)
{
    signed char a = 0;
    return a; /* W0294 */
}

6.275.4 関連メッセージ

6.275.5 対応バージョン

1.0.0


Next: , Previous: W0294, Up: Messages

6.276 W0295

6.276.1 メッセージ本文

signed char 型の値が関数 `unsigned int %s()' から返されています。

6.276.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.276.3 サンプルコード

unsigned int func(void)
{
    signed char a = 0;
    return a; /* W0295 */
}

6.276.4 関連メッセージ

6.276.5 対応バージョン

1.0.0


Next: , Previous: W0295, Up: Messages

6.277 W0296

6.277.1 メッセージ本文

signed char 型の値が関数 `unsigned long %s()' から返されています。

6.277.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.277.3 サンプルコード

unsigned long func(void)
{
    signed char a = 0;
    return a; /* W0296 */
}

6.277.4 関連メッセージ

6.277.5 対応バージョン

1.0.0


Next: , Previous: W0296, Up: Messages

6.278 W0297

6.278.1 メッセージ本文

signed short 型の値が関数 `unsigned char %s()' から返されています。

6.278.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.278.3 サンプルコード

unsigned char func(void)
{
    short a = 0;
    return a; /* W0297 */
}

6.278.4 関連メッセージ

6.278.5 対応バージョン

1.0.0


Next: , Previous: W0297, Up: Messages

6.279 W0298

6.279.1 メッセージ本文

signed short 型の値が関数 `unsigned short %s()' から返されています。

6.279.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.279.3 サンプルコード

unsigned short func(void)
{
    short a = 0;
    return a; /* W0298 */
}

6.279.4 関連メッセージ

6.279.5 対応バージョン

1.0.0


Next: , Previous: W0298, Up: Messages

6.280 W0299

6.280.1 メッセージ本文

signed short 型の値が関数 `unsigned int %s()' から返されています。

6.280.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.280.3 サンプルコード

unsigned int func(void)
{
    short a = 0;
    return a; /* W0299 */
}

6.280.4 関連メッセージ

6.280.5 対応バージョン

1.0.0


Next: , Previous: W0299, Up: Messages

6.281 W0300

6.281.1 メッセージ本文

signed short 型の値が関数 `unsigned long %s()' から返されています。

6.281.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.281.3 サンプルコード

unsigned long func(void)
{
    short a = 0;
    return a; /* W0300 */
}

6.281.4 関連メッセージ

6.281.5 対応バージョン

1.0.0


Next: , Previous: W0300, Up: Messages

6.282 W0301

6.282.1 メッセージ本文

signed int 型の値が関数 `unsigned char %s()' から返されています。

6.282.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.282.3 サンプルコード

unsigned char func(void)
{
    int a = 0;
    return a; /* W0301 */
}

6.282.4 関連メッセージ

6.282.5 対応バージョン

1.0.0


Next: , Previous: W0301, Up: Messages

6.283 W0302

6.283.1 メッセージ本文

signed int 型の値が関数 `unsigned short %s()' から返されています。

6.283.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.283.3 サンプルコード

unsigned short func(void)
{
    int a = 0;
    return a; /* W0302 */
}

6.283.4 関連メッセージ

6.283.5 対応バージョン

1.0.0


Next: , Previous: W0302, Up: Messages

6.284 W0303

6.284.1 メッセージ本文

signed int 型の値が関数 `unsigned int %s()' から返されています。

6.284.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.284.3 サンプルコード

unsigned int func(void)
{
    int a = 0;
    return a; /* W0303 */
}

6.284.4 関連メッセージ

6.284.5 対応バージョン

1.0.0


Next: , Previous: W0303, Up: Messages

6.285 W0304

6.285.1 メッセージ本文

signed int 型の値が関数 `unsigned long %s()' から返されています。

6.285.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.285.3 サンプルコード

unsigned long func(void)
{
    int a = 0;
    return a; /* W0304 */
}

6.285.4 関連メッセージ

6.285.5 対応バージョン

1.0.0


Next: , Previous: W0304, Up: Messages

6.286 W0305

6.286.1 メッセージ本文

signed long 型の値が関数 `unsigned char %s()' から返されています。

6.286.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.286.3 サンプルコード

unsigned char func(void)
{
    long a = 0;
    return a; /* W0305 */
}

6.286.4 関連メッセージ

6.286.5 対応バージョン

1.0.0


Next: , Previous: W0305, Up: Messages

6.287 W0306

6.287.1 メッセージ本文

signed long 型の値が関数 `unsigned short %s()' から返されています。

6.287.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.287.3 サンプルコード

unsigned short func(void)
{
    long a = 0;
    return a; /* W0306 */
}

6.287.4 関連メッセージ

6.287.5 対応バージョン

1.0.0


Next: , Previous: W0306, Up: Messages

6.288 W0307

6.288.1 メッセージ本文

signed long 型の値が関数 `unsigned int %s()' から返されています。

6.288.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.288.3 サンプルコード

unsigned int func(void)
{
    long a = 0;
    return a; /* W0307 */
}

6.288.4 関連メッセージ

6.288.5 対応バージョン

1.0.0


Next: , Previous: W0307, Up: Messages

6.289 W0308

6.289.1 メッセージ本文

signed long 型の値が関数 `unsigned long %s()' から返されています。

6.289.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.289.3 サンプルコード

unsigned long func(void)
{
    long a = 0;
    return a; /* W0308 */
}

6.289.4 関連メッセージ

6.289.5 対応バージョン

1.0.0


Next: , Previous: W0308, Up: Messages

6.290 W0309

6.290.1 メッセージ本文

signed char 型の値が関数 `unsigned long long %s()' から返されています。

6.290.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.290.3 サンプルコード

unsigned long long func(void)
{
    signed char a = 0;
    return a; /* W0309 */
}

6.290.4 関連メッセージ

6.290.5 対応バージョン

1.0.0


Next: , Previous: W0309, Up: Messages

6.291 W0310

6.291.1 メッセージ本文

signed short 型の値が関数 `unsigned long long %s()' から返されています。

6.291.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.291.3 サンプルコード

unsigned long long func(void)
{
    short a = 0;
    return a; /* W0310 */
}

6.291.4 関連メッセージ

6.291.5 対応バージョン

1.0.0


Next: , Previous: W0310, Up: Messages

6.292 W0311

6.292.1 メッセージ本文

signed int 型の値が関数 `unsigned long long %s()' から返されています。

6.292.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.292.3 サンプルコード

unsigned long long func(void)
{
    int a = 0;
    return a; /* W0311 */
}

6.292.4 関連メッセージ

6.292.5 対応バージョン

1.0.0


Next: , Previous: W0311, Up: Messages

6.293 W0312

6.293.1 メッセージ本文

signed long 型の値が関数 `unsigned long long %s()' から返されています。

6.293.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.293.3 サンプルコード

unsigned long long func(void)
{
    long a = 0;
    return a; /* W0312 */
}

6.293.4 関連メッセージ

6.293.5 対応バージョン

1.0.0


Next: , Previous: W0312, Up: Messages

6.294 W0313

6.294.1 メッセージ本文

signed long long 型の値が関数 `unsigned char %s()' から返されています。

6.294.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.294.3 サンプルコード

unsigned char func(void)
{
    long long a = 0;
    return a; /* W0313 */
}

6.294.4 関連メッセージ

6.294.5 対応バージョン

1.0.0


Next: , Previous: W0313, Up: Messages

6.295 W0314

6.295.1 メッセージ本文

signed long long 型の値が関数 `unsigned short %s()' から返されています。

6.295.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.295.3 サンプルコード

unsigned short func(void)
{
    long long a = 0;
    return a; /* W0314 */
}

6.295.4 関連メッセージ

6.295.5 対応バージョン

1.0.0


Next: , Previous: W0314, Up: Messages

6.296 W0315

6.296.1 メッセージ本文

signed long long 型の値が関数 `unsigned int %s()' から返されています。

6.296.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.296.3 サンプルコード

unsigned int func(void)
{
    long long a = 0;
    return a; /* W0315 */
}

6.296.4 関連メッセージ

6.296.5 対応バージョン

1.0.0


Next: , Previous: W0315, Up: Messages

6.297 W0316

6.297.1 メッセージ本文

signed long long 型の値が関数 `unsigned long %s()' から返されています。

6.297.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。 また、より小さいデータ型への暗黙のキャストにより、情報を損失する可能性があります。

6.297.3 サンプルコード

unsigned long func(void)
{
    long long a = 0;
    return a; /* W0316 */
}

6.297.4 関連メッセージ

6.297.5 対応バージョン

1.0.0


Next: , Previous: W0316, Up: Messages

6.298 W0317

6.298.1 メッセージ本文

signed long long 型の値が関数 `unsigned long long %s()' から返されています。

6.298.2 内容

符号つき型から符号なし型への暗黙のキャストにより、結果が意図せず負の数から大きな正の数になる可能性があります。

6.298.3 サンプルコード

unsigned long long func(void)
{
    long long a = 0;
    return a; /* W0317 */
}

6.298.4 関連メッセージ

6.298.5 対応バージョン

1.0.0


Next: , Previous: W0317, Up: Messages

6.299 W0318

6.299.1 メッセージ本文

unsigned char 型の値が関数 `float %s()' から返されています。

6.299.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.299.3 サンプルコード

float func(void)
{
    unsigned char a = 0;
    return a; /* W0318 */
}

6.299.4 関連メッセージ

6.299.5 対応バージョン

1.0.0


Next: , Previous: W0318, Up: Messages

6.300 W0319

6.300.1 メッセージ本文

unsigned char 型の値が関数 `double %s()' から返されています。

6.300.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.300.3 サンプルコード

double func(void)
{
    unsigned char a = 0;
    return a; /* W0319 */
}

6.300.4 関連メッセージ

6.300.5 対応バージョン

1.0.0


Next: , Previous: W0319, Up: Messages

6.301 W0320

6.301.1 メッセージ本文

unsigned char 型の値が関数 `long double %s()' から返されています。

6.301.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.301.3 サンプルコード

long double func(void)
{
    unsigned char a = 0;
    return a; /* W0320 */
}

6.301.4 関連メッセージ

6.301.5 対応バージョン

1.0.0


Next: , Previous: W0320, Up: Messages

6.302 W0321

6.302.1 メッセージ本文

signed char 型の値が関数 `float %s()' から返されています。

6.302.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.302.3 サンプルコード

float func(void)
{
    unsigned char a = 0;
    return a; /* W0321 */
}

6.302.4 関連メッセージ

6.302.5 対応バージョン

1.0.0


Next: , Previous: W0321, Up: Messages

6.303 W0322

6.303.1 メッセージ本文

signed char 型の値が関数 `double %s()' から返されています。

6.303.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.303.3 サンプルコード

double func(void)
{
    unsigned char a = 0;
    return a; /* W0322 */
}

6.303.4 関連メッセージ

6.303.5 対応バージョン

1.0.0


Next: , Previous: W0322, Up: Messages

6.304 W0323

6.304.1 メッセージ本文

signed char 型の値が関数 `long double %s()' から返されています。

6.304.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.304.3 サンプルコード

long double func(void)
{
    unsigned char a = 0;
    return a; /* W0323 */
}

6.304.4 関連メッセージ

6.304.5 対応バージョン

1.0.0


Next: , Previous: W0323, Up: Messages

6.305 W0324

6.305.1 メッセージ本文

signed short 型の値が関数 `float %s()' から返されています。

6.305.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.305.3 サンプルコード

float func(void)
{
    short a = 0;
    return a; /* W0324 */
}

6.305.4 関連メッセージ

6.305.5 対応バージョン

1.0.0


Next: , Previous: W0324, Up: Messages

6.306 W0325

6.306.1 メッセージ本文

signed short 型の値が関数 `double %s()' から返されています。

6.306.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.306.3 サンプルコード

double func(void)
{
    short a = 0;
    return a; /* W0325 */
}

6.306.4 関連メッセージ

6.306.5 対応バージョン

1.0.0


Next: , Previous: W0325, Up: Messages

6.307 W0326

6.307.1 メッセージ本文

signed short 型の値が関数 `long double %s()' から返されています。

6.307.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.307.3 サンプルコード

long double func(void)
{
    short a = 0;
    return a; /* W0326 */
}

6.307.4 関連メッセージ

6.307.5 対応バージョン

1.0.0


Next: , Previous: W0326, Up: Messages

6.308 W0327

6.308.1 メッセージ本文

unsigned short 型の値が関数 `float %s()' から返されています。

6.308.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.308.3 サンプルコード

float func(void)
{
    unsigned short a = 0;
    return a; /* W0327 */
}

6.308.4 関連メッセージ

6.308.5 対応バージョン

1.0.0


Next: , Previous: W0327, Up: Messages

6.309 W0328

6.309.1 メッセージ本文

unsigned short 型の値が関数 `double %s()' から返されています。

6.309.2 内容

整数型から浮動小数点型への暗黙のキャストにより、精度落ちになる可能性があります。

6.309.3 サンプルコード

double func(void)
{
    unsigned short a = 0;
    return a; /* W0328 */
}

6.309.4 関連メッセージ